Wpf 如何在listboxitem(此处按钮)的单击事件中更改listboxitem(此处文本框)的属性
我有一个动态列表框,它包含文本框作为列表框项,与可观察的集合绑定。默认情况下,此文本框处于只读模式,我希望在单击该列表框项目的编辑按钮时使其可编辑。仅当鼠标悬停在列表框项目上时,“编辑”按钮才可见。如何在单击编辑按钮时使文本框可编辑 以下是我尝试过的:Wpf 如何在listboxitem(此处按钮)的单击事件中更改listboxitem(此处文本框)的属性,wpf,textbox,listbox,buttonclick,Wpf,Textbox,Listbox,Buttonclick,我有一个动态列表框,它包含文本框作为列表框项,与可观察的集合绑定。默认情况下,此文本框处于只读模式,我希望在单击该列表框项目的编辑按钮时使其可编辑。仅当鼠标悬停在列表框项目上时,“编辑”按钮才可见。如何在单击编辑按钮时使文本框可编辑 以下是我尝试过的: <ListBox Name="ListUrl" ItemsSource="{Binding .,Source=CollectionUrl,BindsDirectlyToSource=True}"> <Li
<ListBox Name="ListUrl" ItemsSource="{Binding .,Source=CollectionUrl,BindsDirectlyToSource=True}">
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="IsSelected" Value="True"/>
<Setter Property="Background" Value="Gray"/>
</Trigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="30" />
<ColumnDefinition Width="30"/>
</Grid.ColumnDefinitions>
<RadioButton>
<TextBox Name="TextBoxUrl" Text="{Binding Path=urlString, Mode=TwoWay}" Foreground="Gray",IsReadOnly= True>
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=EditButton , Path=IsPressed}" Value="True">
<Setter Property="IsReadOnly" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</RadioButton>
<Button Name="EditButton" Content="Edit" Grid.Column="1" Click="Button_Click">
<Button.Style>
<Style TargetType="Button">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}, AncestorLevel=1}, Path=IsSelected}" Value="True">
<Setter Property="Visibility" Value="Visible" />
<Setter Property="ClickMode" Value="Press"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
<Button Content="Delete" Grid.Column="2" Click="Button_Click_1" HorizontalAlignment="Right" Margin="0">
<Button.Style>
<Style TargetType="Button">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}, AncestorLevel=1}, Path=IsSelected}" Value="True">
<Setter Property="Visibility" Value="Visible" />
<Setter Property="ClickMode" Value="Press"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
用户切换Button并在包含urlString属性的类中创建一个属性bool IsEditing,而不是Button
然后您可以将IsEdit绑定到ToggleButton.IsChecked和TextBox.IsReadOnly,就像
不必说类应该实现INotifyPropertyChanged并引发IsEditing的属性更改
<ToggleButton IsChecked="{Binding IsEditing}"/>
<TextBox Name="TextBoxUrl" IsReadOnly="{Binding IsEditing}"/>