gpt4 book ai didi

c# - 我可以在 xaml 代码中禁用 WPF 组合框的第一项吗?

转载 作者:行者123 更新时间:2023-11-30 21:28:55 25 4
gpt4 key购买 nike

考虑以下组合框:

<ComboBox ItemsSource="{Binding Presets.VolumePresetList}" SelectedIndex="{Binding VolumePresetSelectedIndex, UpdateSourceTrigger=PropertyChanged}" Margin="10, 10" HorizontalAlignment="Left"
MinWidth="150">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding PresetName, UpdateSourceTrigger=Explicit}" VerticalAlignment="Center" Height="20" BorderThickness="0" LostFocus="TextBox_LostFocus" KeyUp="TextBox_KeyUp"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>

组合框的第一个项目是默认预设,在文本框中具有相应的默认名称。因此,用户不应该能够对第一项进行输入 - 因此我想禁用第一项的文本框。

我知道我可以在包含类或 View 模型的构造函数中运行一个函数,它会禁用第一个索引上的文本框,但是我想知道这是否可以直接在 xaml 代码(我会发现一种更优雅的方式来做这些静态的事情)。

最佳答案

您可以利用 PreviousData RelativeSource 将为集合的第一个元素返回 null 这一事实。知道您可以将 DataTrigger 添加到您的 DataTemplate 以将 TextBoxIsEnabled 属性设置为 false。

这是 ItemTemplate 的简化版本,带有 PreviousData 绑定(bind):

       <ComboBox.ItemTemplate>
<DataTemplate>
<TextBox x:Name="TextBox" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=PreviousData}}"
Value="{x:Null}">
<Setter TargetName="TextBox" Property="IsEnabled" Value="False" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ComboBox.ItemTemplate>

关于c# - 我可以在 xaml 代码中禁用 WPF 组合框的第一项吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55866758/

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