gpt4 book ai didi

wpf - 根据组合框选择使按钮可见

转载 作者:行者123 更新时间:2023-12-01 19:47:02 27 4
gpt4 key购买 nike

如果使用 XAML 在组合框中选择某个值,如何使按钮显示?

这是我尝试过的。

谢谢

        <ComboBox x:Name="ComboBox" Margin="171,102,426,271">
<ComboBoxItem>Testing</ComboBoxItem>
<ComboBoxItem>Again</ComboBoxItem>
<ComboBoxItem>Finally</ComboBoxItem>
</ComboBox>

<Button Margin="10, 0, 0, 0" >
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedIndex, ElementName=ComboBox}" Value="Testing">
<Setter Property="Visibility" Value="Hidden"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>

最佳答案

更好的方法是将控件绑定(bind)到 View 模型并在那里集成逻辑。请参阅:Explain Combo Box Binding In MVVM - WPF .

作为示例,我们创建一个用于编辑人员数据的窗口。它包含一个组合框,用户可以在其中选择城市。当选择某个城市时,会显示一个按钮,否则隐藏。

你可以有一个像这样的 View 模型

public class PersonViewModel: INotifyPropertyChanged
{
private string _city;
public string City
{
get { return _city; }
set {
if (value != _city) {
_city = value;
OnPropertyChanged(nameof(City));
OnPropertyChanged(nameof(MyButtonVisibility));
}
}
}

public List<string> Cities { get; } = new List<string> { "Austin", "Boston", "Chicago"};

public Visibility MyButtonVisibility => City == "Boston"
? Visibility.Visible
: Visibility.Hidden;

public event PropertyChangedEventHandler PropertyChanged;

private void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

// Other properties

private string _firstName;
public string FirstName
{
get { return _firstName; }
set {
if (value != _firstName) {
_firstName = value;
OnPropertyChanged(nameof(FirstName));
}
}
}

private string _lastName;
public string LastName
{
get { return _lastName; }
set {
if (value != _lastName) {
_lastName = value;
OnPropertyChanged(nameof(LastName));
}
}
}
}

请注意,它实现了INotifyPropertyChanged。它有一个用于显示组合框项目的 Cities 集合和所选城市的 City 属性。

我们还需要按钮可见性的属性 (MyButtonVisibility)。请注意,当所选城市发生更改时,我们还会引发 MyButtonVisibilityPropertyChanged 事件,以告诉 WPF 重新查询按钮可见性。

在窗口的构造函数中,我们分配 View 模型:

public MainWindow()
{
InitializeComponent();
DataContext = new PersonViewModel();
}

组合框的 XAML 代码是

<ComboBox x:Name="citiesComboBox" HorizontalAlignment="Left" Margin="116,96,0,0"
VerticalAlignment="Top" Width="120"
ItemsSource="{Binding Path=Cities}"
SelectedItem="{Binding Path=City}"
/>

按钮的 XAML 代码是

<Button Content="Button" HorizontalAlignment="Left" Margin="116,164,0,0"
VerticalAlignment="Top" Width="75"
Visibility="{Binding MyButtonVisibility}"
/>

借助 WPF 绑定(bind)的魔力,现在当您选择城市时,该按钮会自动出现或消失。

关于wpf - 根据组合框选择使按钮可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53947396/

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