Включить TextBox, когда ListViewItem выбран в WPF (привязка данных) - PullRequest
2 голосов
/ 06 марта 2011

Как включить / отключить TextBox с привязкой данных в WPF, когда ListViewItem выбран (не)?

Я создал класс преобразователя:

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.");
    }
}

и добавил свойствов TextBox:

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

, но у меня есть исключение XamlParseException, потому что он не может найти класс: - (

Ответы [ 3 ]

3 голосов
/ 06 марта 2011

Вы можете поочередно использовать триггер стиля в TextBox, устраняя необходимость в 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" .../>
2 голосов
/ 30 июля 2012

ListViewItem в ListView:

Включить, если выбрано. Попробуйте следующее:

<ListViewItem Margin="5" Background="AliceBlue">
    <TextBox Margin="5" Text="Lösung SECHS" 
        IsEnabled="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}, Path=IsSelected}"/>
</ListViewItem>
2 голосов
/ 06 марта 2011

Вы можете связать свойство IsEnabled в TextBox со свойством SelectedItem в ListView. Затем вам понадобится конвертер (реализация IValueConverter) для преобразования выбранных значений в логические значения.

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

Тогда в вашем конвертере:

public object Convert(object value, ...)
{
    return value == null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...