gpt4 book ai didi

WPF Combobox SelectedIndex 属性绑定(bind)不起作用

转载 作者:行者123 更新时间:2023-12-04 05:24:13 27 4
gpt4 key购买 nike

我正在尝试将组合框的 SelectedIndex 属性绑定(bind)到我的 ViewModel。这是代码。

Xaml:

<ComboBox x:Name="BloodGroupFilter" SelectedIndex="{Binding Path=SelectedBloodGroupIndex, Mode=TwoWay}">
<ComboBox.ItemsSource>
<CompositeCollection>
<ComboBoxItem Foreground="red" FontStyle="Italic">No Filter</ComboBoxItem>
<CollectionContainer Collection="{Binding Source={StaticResource BloodGroupEnum}}"/>
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>

查看型号
private int _selectedBloodGroupIndex = 4;
public int SelectedBloodGroupIndex {
get { return _selectedBloodGroupIndex; }
set {
_selectedBloodGroupIndex = value;
}
}

如您所见,我正在尝试将组合框的 SelectedIndex 设置为“4”。这不会发生,并且 SelectedIndex 设置为 0。此外,当用户选择组合框的特定项目时,我期望 ViewModel 的 SelectedBloodGroupIndex 属性将自身更新为当前选择的组合框项目,但这也不会发生. ViewModel 属性永远不会被调用(设置和获取)。上述代码绑定(bind)失败的任何原因。

更新
<UserControl.Resources>
<ObjectDataProvider x:Key="BloodGroupEnum" MethodName="GetValues" ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="enums:BloodGroup" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</UserControl.Resources>

最佳答案

您需要在 的 setter 中通知属性更改SelectedBloodGroupIndex 你的 ViewModel 。我希望您确实对 PropertyChanged 事件有所了解。

<Window x:Class="WpfApplication4.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:myWindow="clr-namespace:WpfApplication4"
Title="MainWindow" Height="800" Width="800" WindowStartupLocation="CenterScreen">

<Grid>
<ComboBox SelectedIndex="{Binding SelectedIndex}">
<ComboBoxItem Content="1"/>
<ComboBoxItem Content="2"/>
<ComboBoxItem Content="3"/>
<ComboBoxItem Content="4"/>
<ComboBoxItem Content="5"/>
</ComboBox>
</Grid>
 public partial class MainWindow :Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new MyViewModel();
}
}

public class MyViewModel :INotifyPropertyChanged
{
public MyViewModel()
{
SelectedIndex = 2;
}
private int _selectedIndex;
public int SelectedIndex
{
get
{
return _selectedIndex;
}
set
{
_selectedIndex = value;
Notify("SelectedIndex");
}
}

public event PropertyChangedEventHandler PropertyChanged;

private void Notify(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}

关于WPF Combobox SelectedIndex 属性绑定(bind)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13389926/

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