Arc*_*ius 2 .net c# wpf datatemplate wpf-controls
我为ListView中的项目编写了一个自定义DataTemplate,如下所示:
<DataTemplate x:Key="CustomerStateTemplate">
<Grid Margin="5, 5, 5, 5">
<Grid.ColumnDefinitions>
...
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
...
</Grid.RowDefinitions>
<Image Grid.Row="0" Grid.RowSpan="2" Width="24" Height="20" ... />
<TextBox Style="{StaticResource CustomerStyle}" Grid.Column="0"
Grid.Row="0" Grid.ColumnSpan="2"
Name="nameField">
<TextBox.Text>
<Binding Path="Name" />
</TextBox.Text>
</TextBox>
...
Run Code Online (Sandbox Code Playgroud)
我得到了我漂亮的风格.现在,如果我想选择项目,我必须单击模板控件之间的空白区域.如果我单击ListViewItem中的文本框,它将不会像项目一样选择.那么,有没有办法通过单击其模板中的控件来选择ListViewItem?
万分感谢!
可以在ListViewItem上添加一个触发器,它始终选择项目,然后键盘焦点位于项目内部.当您在ListViewItem上执行此操作时,您对DataTemplate中的所有控件具有相同的行为,这应该是您的解决方案......
例:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<Grid>
<Grid.Resources>
<x:Array x:Key="Data" Type="{x:Type sys:String}">
<sys:String>first</sys:String>
<sys:String>second</sys:String>
<sys:String>third</sys:String>
</x:Array>
<Style TargetType="ListViewItem" x:Key="itemStyle">
<Style.Triggers>
<Trigger Property="IsKeyboardFocusWithin" Value="True">
<Setter Property="IsSelected" Value="True" />
</Trigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<ListView ItemsSource="{StaticResource Data}" ItemContainerStyle="{StaticResource itemStyle}">
<ListView.ItemTemplate>
<DataTemplate DataType="{x:Type sys:String}">
<TextBox Text="{Binding .}">
</TextBox>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</Page>
Run Code Online (Sandbox Code Playgroud)
我希望它清楚......
| 归档时间: |
|
| 查看次数: |
2171 次 |
| 最近记录: |