using DTS.Common.Controls; using DTS.Common.Interface.RegionOfInterest.RegionOfInterestChannels; using DTS.Common.Utils; using System.Windows; using System.Windows.Controls; using System.Windows.Media; namespace RegionOfInterestChannels { /// /// Interaction logic for RegionOfInterestChannelsView.xaml /// public partial class RegionOfInterestChannelsView : IRegionOfInterestChannelsView { public RegionOfInterestChannelsView() { InitializeComponent(); } private void GridViewColumnHeader_OnClick(object sender, RoutedEventArgs e) { var vm = (IRegionOfInterestChannelsViewModel)DataContext; var columnTag = (sender as GridViewColumnHeaderSearchable)?.Tag ?? Utils.FindChild((DependencyObject)e.OriginalSource, null)?.Tag ?? (sender as GridViewColumnHeaderSelectable)?.Tag ?? Utils.FindChild((DependencyObject)e.OriginalSource, null)?.Tag; vm?.Sort(columnTag, true); } private void TextBlock_Loaded(object sender, RoutedEventArgs e) { if (!(sender is TextBlock tb)) return; if (!((tb.TemplatedParent as ContentPresenter)?.Parent is GridViewRowPresenter presenter)) return; for (int i = 0; i < presenter.Columns.Count; i++) { if (!(VisualTreeHelper.GetChild(presenter, i) is ContentPresenter templated) || !templated.Equals((ContentPresenter)tb.TemplatedParent)) continue; //found our column if (presenter.Columns[i].ActualWidth < tb.ActualWidth && double.IsNaN(presenter.Columns[i].Width)) { //now that bindings/templates are applied, control width > column width //force remeasure presenter.Columns[i].Width = tb.ActualWidth; presenter.Columns[i].Width = double.NaN; } break; } } } }