通过数据绑定禁用按钮

发布于 2024-12-01 09:58:00 字数 596 浏览 0 评论 0原文

我有一个树视图和一个删除按钮,我希望仅在选择树视图项目时才启用删除按钮。

我已尝试以下操作,但它不起作用:

<Button.Style>
  <Style>
   <Style.Triggers>
    <DataTrigger Binding="{Binding ElementName=tv_cats, Path=Items.IndexOf(SelectedItem)}" Value="-1">
     <Setter Property="Button.IsEnabled" Value="false" />
    </DataTrigger>
   </Style.Triggers>
  </Style>
</Button.Style>

测试 - 在后面的代码中 -

tv_cats.Items.IndexOf(tv_cats.SelectedItem).ToString() 

如果未选择电视项目,则返回 -1;如果选择了电视项目索引,则返回 -1。

如何在 XAML 中使用此属性?

I have a treeview and a delete button, I want the delete button to be enabled only if a treeview item is selected.

I have tried the following but it doesn't work:

<Button.Style>
  <Style>
   <Style.Triggers>
    <DataTrigger Binding="{Binding ElementName=tv_cats, Path=Items.IndexOf(SelectedItem)}" Value="-1">
     <Setter Property="Button.IsEnabled" Value="false" />
    </DataTrigger>
   </Style.Triggers>
  </Style>
</Button.Style>

to test - in code behind -

tv_cats.Items.IndexOf(tv_cats.SelectedItem).ToString() 

Returns -1 if tv item not selected and tv items index if it is.

How can I use this property in XAML?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

诠释孤独 2024-12-08 09:58:00

有几种方法可以做到这一点,

  1. 通过按钮上的触发器来评估 TreeView 的 selectedItem 属性(按钮默认情况下处于启用状态,当 SelectedItem="{x:Null}" 时启用为 false

  2. 通过将项目存在性转换为布尔值的转换器 (Implements IValueConverter)。

  3. 。 >在 MVVM 中,您可以在 ViewModel 上公开 ButtonIsEnabled 属性,该属性以某种方式检查 SelectedItem 的值(最简单的是让 TreeViews Selected Item 属性也绑定到 VIewModel 上的另一个属性)并从中确定启用状态。

Couple of ways to do this,

  1. Through triggers on the button that evaluate the selectedItem property of the TreeView (Button is enabled by default, Enabled is false when SelectedItem="{x:Null}"

  2. An element property binding from button.Enabled to TreeView.SelectedItem through a converter (Implements IValueConverter) that converts the item existence to a boolean value.

  3. In MVVM, you can have a ButtonIsEnabled property exposed on your ViewModel which checks the value of the SelectedItem in some fashion (Easiest is to have the TreeViews Selected Item property bound to another property on the VIewModel as well) and determing enabled status from that.

风苍溪 2024-12-08 09:58:00

请尝试以下操作:

<Button.Style>  
   <Style >   
      <Style.Triggers>    
           <DataTrigger Binding="{Binding ElementName=tv_cats, Path=SelectedItem}" Value="{x:Null}">     
              <Setter Property="Button.IsEnabled" Value="false" />    
            </DataTrigger>   
       </Style.Triggers>  
   </Style>
</Button.Style>

确保按钮 XAML 声明中没有显式声明 IsEnabled="false"。否则触发器将无法工作。

Try the following:

<Button.Style>  
   <Style >   
      <Style.Triggers>    
           <DataTrigger Binding="{Binding ElementName=tv_cats, Path=SelectedItem}" Value="{x:Null}">     
              <Setter Property="Button.IsEnabled" Value="false" />    
            </DataTrigger>   
       </Style.Triggers>  
   </Style>
</Button.Style>

Make sure that you don't have an explicit declaration of IsEnabled="false" in the Buttons XAML declaration. Otherwise the trigger will not work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文