- Do you know that there is no way (at least from my research and experiments) to hide the control box of a dialog? I tried several ways including using Native
GetWindowLong
and SetWindowLong
to set the border style as fixed dialog but in vein. - One of the hardest things in WPF is to prevent re-size of a column in
ListView
. One way is to completely templatize
ColumnHeader
and comment out the thumb gripper.
This approach is listed here.
I like the other approach listed in the article where one can attach a handler like:
MyListView.AddHandler(Thumb.DragDeltaEvent,
new DragDeltaEventHandler(this.OnHeaderResize), true);
And handle it:
private void OnHeaderResize(object sender, DragDeltaEventArgs e)
{
Thumb SenderAsThumb = e.OriginalSource as Thumb;
GridViewColumnHeader header =
SenderAsThumb.TemplatedParent as GridViewColumnHeader;
if (header == null)
{
return;
}
GridView view = (MyListView.View as GridView);
if (view.Columns[0] == header.Column)
{
header.Column.Width = FixedWidth;
e.Handled = true;
}
}
ListView
and CheckBox
- Following is a method to add a checkbox both to the header and to the column rows in the ListView
:
<ListView Height="200" x:Name="MyListView">
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.HeaderTemplate>
<DataTemplate>
<CheckBox Checked="AllSelectionChanged"
Unchecked="AllSelectionChanged"/>
</DataTemplate>
</GridViewColumn.HeaderTemplate>
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Selected}"/>
</DataTemplate>
</bsp; </GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}"/>
<GridViewColumn Header="Version"
DisplayMemberBinding="{Binding Version}"/>
<GridViewColumn Header="Path" DisplayMemberBinding="{Binding Path}"/>
</GridView>
</ListView.View>
</ListView>
<gridview allowscolumnreorder="False">
<gridviewcolumn width="25">
<gridviewcolumn.headertemplate>
<listview name="MyListView" height="200">
<listview.view><gridview>
<gridviewcolumn><gridviewcolumn.headertemplate>
You can then handle global check / uncheck like:
private void AllSelectionChanged(object sender, RoutedEventArgs e)
{
CheckBox chkBox = sender as CheckBox;
if (chkBox != null)
{
bool check = chkBox.IsChecked.Value;
foreach ([YourBoundType] selection in MyListView.Items)
{
selection.Selected = check;
}
}
}