我正在开发一个自定义的wpf控件,它是从ListBox派生的,我正在尝试将一些格式应用于自定义属性。 当特定的自定义属性为false时,我想将一些格式应用于ListBox。 我使用以下代码尝试应用样式 -
var t = new Trigger();
var BackgroundSetter = new Setter {Property = BackgroundProperty, Value = null};
var BrushSetter = new Setter { Property = BorderBrushProperty, Value = null };
t.Setters.Add(BackgroundSetter);
t.Setters.Add(BrushSetter);
var s = new Style(typeof(ListBox));
s.Triggers.Add(t);
editor.ItemContainerStyle.Triggers.Add(t);
我也试过以下但没有运气 -
editor.ItemContainerStyle = s;
我收到一条错误,指示某些对象未初始化,并且单步执行表明editor.ItemContainerStyle为null。 实际的错误消息只是说调用的目标抛出了异常。
有谁知道我可能做错了什么? 感谢
答案 0 :(得分:1)
我能够使这个工作 - 下面是我实际上最终使用的代码 -
public bool IsSelectable
{
get { return (bool)GetValue(IsSelectableProperty); }
set { SetValue(IsSelectableProperty, value); }
}
public static DependencyProperty IsSelectableProperty = DependencyProperty.Register("IsSelectable", typeof(bool), typeof(ListEditor), new FrameworkPropertyMetadata(true, new PropertyChangedCallback(IsSelectablePropertyChanged)) { BindsTwoWayByDefault = true });
private static void IsSelectablePropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
var editor = sender as ListEditor;
var s = new Style(typeof(ListBoxItem));
var enableSetter = new Setter {Property = IsEnabledProperty, Value = editor.IsSelectable};
s.Setters.Add(enableSetter);
editor.ItemContainerStyle = s;
}