多个WPF自定义控件实例之间的共享事件

时间:2011-10-15 18:55:07

标签: wpf custom-controls

我有一些使用复合用户控件模型用C#编写的自定义用户控件(即以UserControl开头),当单独使用时,我没有看到任何问题。但是当在同一个父级中使用同一控件的两个实例时,它们似乎在窃取彼此的事件。

这是一个例子。我有一个使用ListView的控件。在LayoutUpdated事件上,我正在更新列的宽度以调整内容。并不是说这会给问题增加任何价值,但这里是处理程序的代码:

var view = transactionListView.View as GridView;
if (view == null) return;
view.Columns[0].Width = view.Columns[0].ActualWidth;
view.Columns[0].Width = double.NaN;
view.Columns[view.Columns.Count - 1].Width = view.Columns[view.Columns.Count - 1].ActualWidth;
view.Columns[view.Columns.Count - 1].Width = double.NaN;
const int dynamicColumnIndex = 2;
try
{
    var dynamicColumnWidth = view.Columns.Where((t, index) => dynamicColumnIndex != index)
       .Aggregate(transactionListView.ActualWidth, (current, t) => current - t.ActualWidth);
    view.Columns[dynamicColumnIndex].Width = dynamicColumnWidth - 25;
}
catch (Exception ex)
{
  // log
}

同样,上面的示例仅用于提供一些上下文,但我所指的其他控件包含完全不同的实现。

我想如果我在控件中为ListView提供了一个x:Name,它可能有所帮助,但事实并非如此。然后,当我使用它时,我为自定义控件提供了一个x:Name。没有区别。

我在ListView中使用此控件时的结果是第二个ListView是唯一一个在列上维护自动大小的结果。第一个似乎没有受到影响。

0 个答案:

没有答案