Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如何在listboxitem(此处按钮)的单击事件中更改listboxitem(此处文本框)的属性_Wpf_Textbox_Listbox_Buttonclick - Fatal编程技术网

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}"/>