gpt4 book ai didi

WPF 在更改属性时更新两个值

转载 作者:行者123 更新时间:2023-12-01 04:27:38 25 4
gpt4 key购买 nike

我在使用以下 XAML 时遇到了一些困难:

<ListBox x:Name="lstRegion" ItemsSource="{Binding}" SelectionMode="Multiple">
<ListBox.ItemTemplate>
<DataTemplate DataType="ListBoxItem">
<CheckBox Content="{Binding Element.Region_Code}" IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}, Path=IsSelected, Mode=TwoWay}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

此代码将更新包含 ListBoxItem 的 IsSelected 属性,允许我从 lstRegion.SelectedItems 返回此内容。

但是,当复选框 IsChecked 值更改时,我还需要更新 ItemsSource 中的值。
有没有办法更新 ItemsSource 和 ListBoxItem 中的值?似乎我可以改变一个或另一个,只是不能两者都改变​​。
我确信我可以捕捉到 PropertyChanged 事件并手动更新该值,但这似乎是我在做一个额外的步骤,因为我没有正确理解某些东西。任何帮助表示赞赏。

这是用于填充 ListBox 上的 ItemsSource 的类:
 public class SelectionItem<T> : INotifyPropertyChanged
{
#region private fields
/// <summary>
/// indicates if the item is selected
/// </summary>
private bool _isSelected;
#endregion

public SelectionItem(T element, bool isSelected)
{
Element = element;
IsSelected = isSelected;
}

public SelectionItem(T element):this(element,false)
{

}

#region public properties
/// <summary>
/// this UI-aware indicates if the element is selected or not
/// </summary>
public bool IsSelected
{
get
{
return _isSelected;
}
set
{
if (_isSelected != value)
{
_isSelected = value;
PropertyChanged(this, new PropertyChangedEventArgs("IsSelected"));
}
}
}

/// <summary>
/// the element itself
/// </summary>
public T Element { get; set; }
#endregion

#region INotifyPropertyChanged Members

public event PropertyChangedEventHandler PropertyChanged;
}

最佳答案

像这样的东西应该给你你需要的东西:

<ListBox x:Name="lstRegion" ItemsSource="{Binding}" SelectionMode="Multiple">
<ListBox.ItemTemplate>
<DataTemplate DataType="ListBoxItem">
<CheckBox Content="{Binding Element.Region_Code}" IsChecked="{Binding IsSelected, Mode=TwoWay}"/>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemContainerStyle>
<Style TargetType="x:Type ListBoxItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>

关于WPF 在更改属性时更新两个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57066538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com