Skip to content
This repository was archived by the owner on Dec 18, 2023. It is now read-only.

Commit c0b454d

Browse files
committed
fixed listviewgridviewstyle
1 parent d2e020e commit c0b454d

File tree

8 files changed

+184
-121
lines changed

8 files changed

+184
-121
lines changed

CookPopularCSharpToolkit/Windows/Helpers/ResourceHelper.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,19 @@ public static TResource GetResource<TResource>(string resourceKey)
2525

2626
return default(TResource);
2727
}
28+
29+
/// <summary>
30+
/// 根据Key获取资源
31+
/// </summary>
32+
/// <typeparam name="TResource"></typeparam>
33+
/// <param name="resourceKey"></param>
34+
/// <returns></returns>
35+
public static TResource GetResource<TResource>(object resourceKey)
36+
{
37+
if (Application.Current.TryFindResource(resourceKey) is TResource resource)
38+
return resource;
39+
40+
return default(TResource);
41+
}
2842
}
2943
}

CookPopularControl/Communal/Attached/DataGridViewAttached.cs

Lines changed: 0 additions & 44 deletions
This file was deleted.

CookPopularControl/Controls/DialogBox/DialogExtensions.cs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -93,15 +93,7 @@ void SetResult()
9393
{
9494
try
9595
{
96-
bool isExcute = false;
97-
if (dialog is Windows.DialogWindow win && win.IsConfirm)
98-
isExcute = true;
99-
else if (dialog is DialogBox dialogBox)
100-
isExcute = true;
101-
else
102-
isExcute = false;
103-
104-
if (isExcute)
96+
if ((dialog is Windows.DialogWindow win && win.IsConfirm) || dialog is DialogBox)
10597
tcs.TrySetResult(dialog.GetViewModel<IDialogResultable<TResult>>().Result);
10698
}
10799
catch (Exception e)

CookPopularControl/Controls/ItemsControl/ListViewAssistant.cs

Lines changed: 82 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
1-
using System.Windows;
1+
using CookPopularCSharpToolkit.Communal;
2+
using CookPopularCSharpToolkit.Windows;
3+
using System;
4+
using System.Linq;
5+
using System.Windows;
26
using System.Windows.Controls;
7+
using System.Xml.Linq;
38

49

510

@@ -12,12 +17,87 @@
1217
namespace CookPopularControl.Controls
1318
{
1419
/// <summary>
15-
/// <see cref="ListView"/>的附加属性基类
20+
/// 表示<see cref="GridViewColumn"/>的附加属性基类
21+
/// </summary>
22+
public class GridViewColumnAssistant
23+
{
24+
public static GridLength GetColumnMinWidth(DependencyObject obj) => (GridLength)obj.GetValue(ColumnMinWidthProperty);
25+
public static void SetColumnMinWidth(DependencyObject obj, GridLength value) => obj.SetValue(ColumnMinWidthProperty, value);
26+
/// <summary>
27+
/// 标识<see cref="GridViewColumnHeader"/>列项最小宽度
28+
/// </summary>
29+
public static readonly DependencyProperty ColumnMinWidthProperty =
30+
DependencyProperty.RegisterAttached("ColumnMinWidth", typeof(GridLength), typeof(GridViewColumnAssistant), new PropertyMetadata(GridLength.Auto, OnColumnMinWidthChanged));
31+
32+
private static void OnColumnMinWidthChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
33+
{
34+
if (d is GridViewColumn column)
35+
{
36+
var defaultGridViewColumnHeaderStyle = ResourceHelper.GetResource<Style>(typeof(GridViewColumnHeader));
37+
Style style = new Style(typeof(GridViewColumnHeader), defaultGridViewColumnHeaderStyle);
38+
var setter = new Setter(GridViewColumnHeader.MinWidthProperty, GetColumnMinWidth(column).Value);
39+
style.Setters.Add(setter);
40+
column.HeaderContainerStyle = style;
41+
}
42+
}
43+
44+
45+
public static Thickness GetColumnHeaderPadding(DependencyObject obj) => (Thickness)obj.GetValue(ColumnHeaderPaddingProperty);
46+
internal static void SetColumnHeaderPadding(DependencyObject obj, Thickness value) => obj.SetValue(ColumnHeaderPaddingProperty, value);
47+
/// <summary>
48+
/// 标识<see cref="GridViewColumnHeader"/>的内边距
49+
/// 暂时无效
50+
/// </summary>
51+
public static readonly DependencyProperty ColumnHeaderPaddingProperty =
52+
DependencyProperty.RegisterAttached("ColumnHeaderPadding", typeof(Thickness), typeof(GridViewColumnAssistant), new PropertyMetadata(default(Thickness), OnColumnHeaderPaddingChanged));
53+
54+
private static void OnColumnHeaderPaddingChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
55+
{
56+
if (d is GridViewColumn column)
57+
{
58+
var defaultGridViewColumnHeaderStyle = ResourceHelper.GetResource<Style>(typeof(GridViewColumnHeader));
59+
Style style = new Style(typeof(GridViewColumnHeader), defaultGridViewColumnHeaderStyle);
60+
var setter = new Setter(ColumnHeaderPaddingProperty, GetColumnHeaderPadding(column));
61+
//var setter = new Setter(GridViewColumnHeader.PaddingProperty, GetColumnHeaderPadding(column));
62+
63+
//var setter = (Setter)style.Setters.FirstOrDefault(setter => ((Setter)setter).Property == GridViewColumnHeader.PaddingProperty)!;
64+
//setter.Value = GetColumnHeaderPadding(column);
65+
66+
style.Setters.Add(setter);
67+
column.HeaderContainerStyle = style;
68+
}
69+
}
70+
}
71+
72+
73+
/// <summary>
74+
/// 表示<see cref="ListView"/>的附加属性基类
1675
/// </summary>
1776
public class ListViewAssistant
1877
{
78+
public static double GetColumnHeaderHeight(DependencyObject obj) => (double)obj.GetValue(ColumnHeaderHeightProperty);
79+
public static void SetColumnHeaderHeight(DependencyObject obj, double value) => obj.SetValue(ColumnHeaderHeightProperty, value);
80+
/// <summary>
81+
/// 标识<see cref="GridViewColumnHeader"/>的标头高度
82+
/// </summary>
83+
public static readonly DependencyProperty ColumnHeaderHeightProperty =
84+
DependencyProperty.RegisterAttached("ColumnHeaderHeight", typeof(double), typeof(ListViewAssistant), new PropertyMetadata(ValueBoxes.Double30Box));
85+
86+
87+
public static bool GetIsColumnHeaderFontWeight(DependencyObject obj) => (bool)obj.GetValue(IsColumnHeaderFontWeightProperty);
88+
public static void SetIsColumnHeaderFontWeight(DependencyObject obj, bool value) => obj.SetValue(IsColumnHeaderFontWeightProperty, ValueBoxes.BooleanBox(value));
89+
/// <summary>
90+
/// 表示<see cref="GridViewColumnHeader"/>是否采用粗体
91+
/// </summary>
92+
public static readonly DependencyProperty IsColumnHeaderFontWeightProperty =
93+
DependencyProperty.RegisterAttached("IsColumnHeaderFontWeight", typeof(bool), typeof(ListViewAssistant), new PropertyMetadata(ValueBoxes.FalseBox));
94+
95+
1996
public static Thickness GetListViewItemPadding(DependencyObject obj) => (Thickness)obj.GetValue(ListViewItemPaddingProperty);
2097
public static void SetListViewItemPadding(DependencyObject obj, Thickness value) => obj.SetValue(ListViewItemPaddingProperty, value);
98+
/// <summary>
99+
/// 表示<see cref="ListViewItem"/>的内边距
100+
/// </summary>
21101
public static readonly DependencyProperty ListViewItemPaddingProperty =
22102
DependencyProperty.RegisterAttached("ListViewItemPadding", typeof(Thickness), typeof(ListViewAssistant), new PropertyMetadata(default(Thickness)));
23103
}

CookPopularControl/Controls/Thumb/GridViewColumThumb.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.Windows.Input;
1+
using System.Windows;
2+
using System.Windows.Input;
23

34

45

@@ -24,7 +25,6 @@ protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
2425
protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
2526
{
2627
base.OnMouseLeftButtonUp(e);
27-
2828
Mouse.OverrideCursor = null;
2929
}
3030
}

CookPopularControl/CookPopularControl.xml

Lines changed: 32 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CookPopularControl/Themes/BaseStyle/ListBoxBaseStyle.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@
216216
pc:ScrollBarAssistant.HorizontalScrollBarHeight="{TemplateBinding pc:ScrollBarAssistant.HorizontalScrollBarHeight}"
217217
pc:ScrollBarAssistant.IsShowScrollBarRepeatButton="{TemplateBinding pc:ScrollBarAssistant.IsShowScrollBarRepeatButton}"
218218
pc:ScrollBarAssistant.VerticalScrollBarWidth="{TemplateBinding pc:ScrollBarAssistant.VerticalScrollBarWidth}">
219-
<!--<StackPanel SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" IsItemsHost="True" />-->
219+
<!--<StackPanel x:Name="ItemsPresenter" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" IsItemsHost="True" />-->
220220
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
221221
</ScrollViewer>
222222
</Border>

0 commit comments

Comments
 (0)