0
我有一個wpf列表視圖,其中3個組合框和2個複選框作爲列。我基於某些搜索條件玩複選框可見性。我可以實現行之間的水平線,但是我無法實現垂直線來分隔列。我從我的模型中更改了複選框&列寬的可見性。我需要遵循MVVM模式。 非常感謝。 在此先感謝。如何在MVVM模式下動態更改列寬列表視圖列行
下面是我的XAML代碼
<ListView Grid.ColumnSpan="3" Grid.Column="1" Grid.Row="2"
ItemsSource="{Binding NewTransactionSetlist,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding SelectedNewItem,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectedIndex="{Binding SelectedNewIndex, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
VerticalAlignment="Top" Height="320" SelectionMode="Single"
HorizontalAlignment="Center" Width="1240">
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Padding" Value="0,2"/>
<Setter Property="BorderBrush" Value="LightGray"/>
<Setter Property="BorderThickness" Value="0,0,0,1"/>
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<!--<EventSetter Event="PreviewGotKeyboardFocus" Handler="SelectCurrentItem" ></EventSetter>
<Style.Triggers>
<Trigger Property="IsKeyboardFocusWithin" Value="true">
<Setter Property="IsSelected" Value="true" />
</Trigger>
</Style.Triggers>-->
<!--<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Value="True">
<Setter Property="IsSelected" Value="True" />
</DataTrigger>
</Style.Triggers>-->
</Style>
</ListView.ItemContainerStyle>
<!--<i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewGotKeyboardFocus">
<i:InvokeCommandAction Command="{Binding PreviewGotKeyboardFocusCommand}"
/>
</i:EventTrigger>
</i:Interaction.Triggers>-->
<!--<Style TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Value="True">
<Setter Property="IsSelected" Value="True" />
</DataTrigger>
</Style.Triggers>
</Style>-->
<ListView.InputBindings>
<KeyBinding
Key="Delete"
Command="{Binding NewTransactionDataGridRowDeleteCommand}"/>
</ListView.InputBindings>
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource GridViewHeaderStyle}">
<GridViewColumn Header="Transaction" Width="{Binding NewTransactionHeaderLength,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<ComboBox x:Name="ComboBoxParamList" HorizontalAlignment="Left" Width="{Binding TransactionHeaderLength,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
IsEditable="False" Style="{DynamicResource DatagridComboboxFontstyle}"
Text="{Binding ParamGroup, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
SelectedValue ="{Binding ParamGroup, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{Binding ParamGroupList}" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding DataContext.ParameterNewSelectionChangedCommand,
RelativeSource={RelativeSource AncestorType=ListView}}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ComboBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="System" Width="{Binding NewSystemHeaderLength,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ComboBox x:Name="ComboBoxSystemList" HorizontalAlignment="Left" Width="{Binding SystemHeaderLength,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
IsEditable="False" Style="{DynamicResource DatagridComboboxFontstyle}"
Text="{Binding SystemName, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
SelectedValue ="{Binding SystemName, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{Binding SystemNameList}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="HandAdd" Width="{Binding NewHandAddHeaderLength,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="CheckBoxNewHandAdd" Width="{Binding HandAddHeaderLength,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
Visibility="{Binding HandAddVisibility,Converter={StaticResource BoolToVisConverter}}"
IsChecked="{Binding HandAdd, Mode=TwoWay, NotifyOnSourceUpdated=True,
UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Center" Margin="90,0,0,0" ></CheckBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Downstream" Width="{Binding NewDownstreamHeaderLength,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox Width="{Binding DownstreamHeaderLength,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
Visibility="{Binding DownstreamVisibility,Converter={StaticResource BoolToVisConverter}}"
IsChecked="{Binding Downstream, Mode=TwoWay, NotifyOnSourceUpdated=True,
UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Center" Margin="90,0,0,0"></CheckBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Node" Width="{Binding NewNodeHeaderLength,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ComboBox x:Name="ComboBoxNodeList" Width="{Binding NodeHeaderLength,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
Text="{Binding Node, Mode=TwoWay, NotifyOnSourceUpdated=True,
UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left"
SelectedValue ="{Binding Node, Mode=TwoWay, NotifyOnSourceUpdated=True,
UpdateSourceTrigger=PropertyChanged}" IsEditable="False" Style="{DynamicResource DatagridComboboxFontstyle}"
ItemsSource="{Binding NodeList}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
所以你想顯示網格上的網格?嘗試https://msdn.microsoft.com/en-us/library/system.windows.controls.grid.showgridlines(v=vs.105).aspx在網格中設置ShowGridLines = true。 –
我使用.net框架4.6,我沒有在我的程序集中找到它。我怎樣才能得到該DLL? –
是的,試試這個博客http://blog.bulatgafurov.name/2010/06/listview-horizontal-and-vertical.html,你可以創建垂直水平網格線。 –