Для моего ListBox
меня есть DataTemplate
:
<DataTemplate x:Key="lbTemplate" DataType="{x:Type ListBoxItem}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="6*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Naam, Mode=OneWay}" VerticalAlignment="Center" />
<TextBox TextAlignment="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}},
Path=IsSelected, Converter={StaticResource BoolToAlignment}}"
Text="{Binding Path=Aantal, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, TargetNullValue=0}"
</Grid>
</DataTemplate>
К каким свойствам относятся:
public class menuItem
{
public int? Aantal { get; set; }
public string Naam { get; set; }
}
Как очистить значение TextBox
если выбран соответствующий ListBoxItem
не теряя привязки к Aantal?
имущество?
Используйте Style
с DataTrigger
:
<Style TargetType="TextBox" x:Key="tbStyle">
<Setter Property="Text" >
<Setter.Value>
<Binding Path="Aantal" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged" />
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}},
Path=IsSelected}" Value="True">
<Setter Property="Text" Value="{x:Null}" />
</DataTrigger>
</Style.Triggers>
</Style>
РЕДАКТИРОВАТЬ
Для сброса (очистки), связанный Aantal
свойства после выбора ListBoxItem
:
Добавьте флаг IsSelected
в класс item, привяжите его к свойству ListBoxItem.IsSelected
, добавив в свой ListBox
следующий стиль:
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
</Style>
</ListBox.ItemContainerStyle>
Затем в IsSelected
setter добавьте код: if (value) { this.Aantal = ""; }
if (value) { this.Aantal = ""; }
ListBoxItem
? ..Aantal
было установлено вnull
(илиString.Empty
) при отменеListBoxItem
?