我很困惑这可能是微不足道的事情。我有LayoutGroup
DevExpresses
类的一个子我自定义属性(不应有任何区别IMO):自定义WPF绑定不更新列表框选择
public class ExpandableLayoutGroup : LayoutGroup
{
public static readonly DependencyProperty IsExpandedProperty = DependencyProperty.Register("IsExpanded", typeof(Boolean), typeof(ExpandableLayoutGroup));
public Boolean IsExpanded
{
get { return (Boolean) GetValue(IsExpandedProperty); }
set
{
expandCheckBox.IsChecked = value;
SetValue(IsExpandedProperty, value);
}
}
}
然后,我必须XAML结合(含2项在这个时候)列表框称为listStates
。
<ExpandableLayoutGroup x:Name="groupTool" IsExpanded="{Binding SelectedValue.IsTool, ElementName=listStates}" DataContext="{Binding Tool}" Header="Tool" View="GroupBox" />
对象列表结合listStates同时包含属性(简单):
public class State
{
public Boolean IsItemTool { get; private set; }
public Tool Tool { get; private set; }
}
我失去了一些东西明显?因为我期望当我更改列表框选择(单个)时,它也会更新组中的IsExpanded
属性。我有更多的子属性的工具绑定(由DataContext="{Binding Tool}"
明显)和那些更新很好。因此,DataContext
在列表框选择上正确更改。除了这一个属性IsExpanded
(这应该展开/折叠布局组)。
我做错了什么,以及如何做到这一点,当列表框发生变化时,IsExpanded
绑定被轮询从IsTool
获取值,并将设置它(取决于选择)。
我.. ..被定罪。我有回调设置,但它从来没有被调用,因为属性中的其他代码。现在它真的被召唤了。我从来不知道该属性必须是空的(SetValue/GetValue除外)。现在我明白了。让我进行一些测试,然后我会接受你的答案。 – SmartK8
它的工作,完美。谢谢。 – SmartK8