【发布时间】:2010-11-22 05:07:57
【问题描述】:
我在 Windows 窗体中有一个 ListView,我在创建窗体时绑定了一个对象列表。我想做的是在按钮单击循环中通过创建的项目并将其 IsEnabled 属性更改为 false。我尝试了两种方法,但都不是特别成功。任何人都可以帮助解决这些问题和/或建议一种替代方法吗?
我的 ListView XAML
<ListView Margin="6" Name="myListView" ItemsSource="{Binding Path=.}">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="350"/>
<ColumnDefinition Width="20"/>
<ColumnDefinition Width="350"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="30" />
<RowDefinition Height="30" />
<RowDefinition Height="30" />
</Grid.RowDefinitions>
<TextBlock Name="ItemNameTextBlock" Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="4" VerticalAlignment="Center" Text="{Binding Path=ItemName}" />
<CheckBox Name="Action1CheckBox" Grid.Row="1" Grid.Column="1" Content="Action1" IsChecked="True" />
<CheckBox Name="Action2CheckBox" Grid.Row="1" Grid.Column="3" Content="Action2" IsChecked="True" />
<TextBox Height="23" Name="MyInputTextBox" Grid.Row="2" Grid.Column="1" Margin="2,0,2,0" VerticalAlignment="Top" Width="25" Text="{Binding Path=DataValue}" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
目标:按下按钮时(不相关的按钮)禁用复选框和文本框
尝试 1: 这不起作用,项目是数据绑定项目,我想不出一种方法来让控件本身做这样的事情。这甚至可能吗?
foreach (var item in ReleaseDeployProcessListView.Items)
{
((CheckBox)item.FindControl("Action1CheckBox")).IsEnabled = false;
}
尝试 2: 我在表单中添加了一个公共属性“IsFormElementsEnabled”,然后单击按钮将此值设置为 false。但我不知道如何/如果/我需要做什么来将其绑定到项目。我尝试了 IsEnabled="{Binding Path=IsFormElementsEnabled} (它不起作用,因为它绑定到对象并且不是那些对象的一部分)并且我尝试了 IsEnabled="{Binding Path=this.IsFormElementsEnabled} (它没有'似乎也不起作用)
【问题讨论】:
标签: wpf winforms data-binding listview loops