wpf的RenderTransform如何写道样式文件里

wpf的RenderTransform如何写道样式文件里,第1张

你可以按如下定义样式尝试下:

<Style x:Key="dtpStyle" TargetType="{x:Type DatePicker}">

<Setter Property="RenderTransform">

<Setter.Value>

<ScaleTransform ScaleX="2" ScaleY="2"/>

</Setter.Value>

</Setter>

</Style>

<DatePicker x:Name="dtp1" Style="{DynamicResource dtpStyle}" />

<DatePicker x:Name="dtp2" Grid.Row="3">

<DatePicker.RenderTransform>

<ScaleTransform ScaleX="2" ScaleY="2"/>

</DatePicker.RenderTransform>

</DatePicker>

控件的属性,都可以放到Style中定义,基本格式都是

单一属性(如:宽,高,颜色等):

<Setter Property="单一属性" Value="值">

复杂属性(如:渐变背景,模板等):

<Setter Property="复杂属性">

<Setter.Value>

<!--属性的值描述-->

</Setter.Value>

</Setter>

WPF中实现点击 . . . 按钮后选择文件夹作为主目录功能;亲测有用

(下图是我用WPF做的FTP服务器和FTP上传下载器的一部分)

// 选择文件夹

private void btnSelectRootDirect_Click(object sender, RoutedEventArgs e)

{

    System.Windows.Forms.FolderBrowserDialog openFileDialog = 

                                   new System.Windows.Forms.FolderBrowserDialog()

    /*注意,FolderBrowserDialog前面的命名空间不能删除,此处一定要手动引入

    System.Window.Forms空间,否则你使用默认的DialogResult会发现没有OK属性*/

    if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)

    {

        txtFtpRoot.Text = openFileDialog.SelectedPath

    }

}

注意:在wpf中手动引入System.Window.Forms时报错,原因如下

在C# Winform窗体应用中默认引入System.Window.Forms,

但是wpf中没有没有默认引入System.Window.Forms;需要添加引用

解决方案:项目右侧--解决资源管理器---引用---右键--添加引用---在.NET下拉框找---找到System.Windows.Forms---点击确定然后--vs的菜单栏第五个--生成----重新生成解决方案--就可以了。

注意:此时如果程序中包含MessageBox,则引入System.Windows.Forms时MessageBox会报错(因为System.Windows和System.Windows.Forms两个命名空间下都有MessageBox类,如果不指明该类是哪个空间下的,程序就会摸不着头脑),改为System.Windows.MessageBox即可

涉及到ColumnHeader、RowHeader、Row、Cell 的各种样式设置。

ColumnHeaderStyle 属性

一般来讲列表头是用户首先注意的内容,那么如何在DataGrid 中设计一个美观的表头呢。我们既可以在<DataGrid>中通过<DataGrid.ColumnHeaderStyle>来全局定义;也可以针对个别列在<DataGrid.Columns>中通过<DataGridColumn.HeaderStyle>定义。

DataGrid x:Name="dataGrid" ItemsSource="{Binding}" AutoGenerateColumns="False"

SelectionUnit="CellOrRowHeader" IsReadOnly="True">

<DataGrid.ColumnHeaderStyle>

<Style TargetType="DataGridColumnHeader">

<Setter Property="Background">

<Setter.Value>

<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">

<GradientStop Color="White" Offset="0"/>

<GradientStop Color="Yellow" Offset="0.5"/>

<GradientStop Color="White" Offset="1"/>

</LinearGradientBrush>

</Setter.Value>

</Setter>

<Setter Property="Foreground" Value="Black"/>

<Setter Property="FontSize" Value="13" />

</Style>

</DataGrid.ColumnHeaderStyle>

<DataGrid.Columns>

<DataGridTextColumn Header="Name" Binding="{Binding Name}">

<DataGridColumn.HeaderStyle>

<Style TargetType="DataGridColumnHeader">

<Setter Property="Background">

<Setter.Value>

<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">

<GradientStop Color="White" Offset="0"/>

<GradientStop Color="SkyBlue" Offset="0.5"/>

<GradientStop Color="White" Offset="1"/>

</LinearGradientBrush>

</Setter.Value>

</Setter>

<Setter Property="Foreground" Value="Black"/>

<Setter Property="FontSize" Value="13"/>

<Setter Property="Width" Value="80"/><Style.Triggers>

<Trigger Property="IsMouseOver" Value="True">

<Setter Property="ToolTip" Value="Sort by Column"/>

</Trigger>

</Style.Triggers>

</Style>

</DataGridColumn.HeaderStyle>

</DataGridTextColumn>

<DataGridTextColumn Header="Age" Binding="{Binding Age}">

<DataGridColumn.HeaderStyle>

<Style TargetType="DataGridColumnHeader">

<Setter Property="Background">

<Setter.Value>

<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">

<GradientStop Color="White" Offset="0"/>

<GradientStop Color="LightGreen" Offset="0.5"/>

<GradientStop Color="White" Offset="1"/>

</LinearGradientBrush>

</Setter.Value>

</Setter>

<Setter Property="Foreground" Value="Black"/>

<Setter Property="FontSize" Value="13"/>

<Setter Property="Width" Value="50"/>

</Style>

</DataGridColumn.HeaderStyle>

</DataGridTextColumn>

<DataGridComboBoxColumn Header="Sex" 

SelectedItemBinding="{Binding Sex}" 

ItemsSource="{Binding Source={StaticResource sexEnum}}">

<DataGridColumn.HeaderStyle>

<Style TargetType="DataGridColumnHeader">

<Setter Property="Background">

<Setter.Value>

<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">

<GradientStop Color="White" Offset="0"/>

<GradientStop Color="LightPink" Offset="0.5"/>

<GradientStop Color="White" Offset="1"/>

</LinearGradientBrush>

</Setter.Value>

</Setter>

<Setter Property="Foreground" Value="Black"/>

<Setter Property="FontSize" Value="13"/>

<Setter Property="Width" Value="70"/>

</Style>

</DataGridColumn.HeaderStyle>

</DataGridComboBoxColumn>

<DataGridCheckBoxColumn Header="Pass Exam?" Width="100" 

Binding="{Binding Pass}"/>

<DataGridHyperlinkColumn Header="Email" Width="150" 

Binding="{Binding Email}"/>

</DataGrid.Columns>

</DataGrid>

其效果如下图所示,Name、Age、Sex 列会按各自的样式显示。未定义样式的Pass Exam 和Email 列将按<DataGrid.ColumnHeaderStyle>全局定义显示,并且当鼠标移置到这两列上方时会有"Sort by Column"提示信息。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/8028013.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-12
下一篇2023-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存