开发者

Enable TextBox when ListViewItem is selected in WPF (databinding)

How can i enable/disable a TextBox with DataBinding in WPF when a ListViewItem is (not) selected?

I have created a converter class:

public class BoolConvert : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value == null;
 开发者_高级运维   }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new Exception("The method or operation is not implemented.");
    }
}

and added the property to the TextBox:

IsEnabled="{Binding SelectedItem, ElementName=listViewCards, Converter={StaticResource BoolConvert}}"

but i have a XamlParseException becouse he can´t find the class :-(


You could alternately use a style trigger on the TextBox, eliminating the need for a ValueConverter:

<TextBox>
   <TextBox.Style>
     <Style TargetType="{x:Type TextBox}">
       <Setter Property="IsEnabled" Value="False"/>
       <Style.Triggers>
         <DataTrigger Binding="{Binding ElementName=lvItems, Path=SelectedItem}" Value="{x:Null}">
           <Setter Property="IsEnabled" Value="True"/>
         </DataTrigger>
       </Style.Triggers>
     </Style>
   </TextBox.Style>
</TextBox>
<ListView Name="lvItems" .../>


You can bind the IsEnabled property on the TextBox to the SelectedItem property on the ListView. Then you'll need a converter (an implementation of IValueConverter) to convert selected values into boolean values.

<TextBox IsEnabled="{Binding SelectedItem, ElementName=listView, Converter={StaticResource MyConverter}}"/>
<ListView x:Name="listView" .../>

Then, in your converter:

public object Convert(object value, ...)
{
    return value == null;
}


ListViewItem in ListView :

Enable if Selected. Try the following:

<ListViewItem Margin="5" Background="AliceBlue">
    <TextBox Margin="5" Text="Lösung SECHS" 
        IsEnabled="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}, Path=IsSelected}"/>
</ListViewItem>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜