使用类字段在XAML中设置值

时间:2018-06-25 09:11:16

标签: wpf xaml

我有一个DataGrid

<DataGrid Grid.Row="4" Name="grvAllCry" Margin="5,5,5,5" ItemsSource="{Binding}" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="Rank" Width="10*" >
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Label Content="{Binding Rank}" Foreground="#46BF6E"></Label>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
     </DataGrid.Columns>
</DataGrid>

如您所见,我将Foreground行的DataGrid设置为“#46BF6E”。但是我有很多DataGrid,我想重用这个变量。像这样:

public static class Config
{
    public static string MyGreen = "#46BF6E";
    public static string MyRed = "#D14836";
    public static string MyBlue = "#428BCA";
}

有没有办法创建类似的类并在许多不同的xaml文件中使用它的变量?例如:

<Label Content="{Binding Rank}" Foreground="MyGreen"></Label>

在xaml文件中时,我不知道如何从.cs文件中调用变量,请帮助我。

2 个答案:

答案 0 :(得分:1)

您可以在定义ResourceDictionary资源的地方创建一个新的Brush

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <SolidColorBrush x:Key="myBrush" Color="#46BF6E"/>
</ResourceDictionary>

如果您希望能够在整个应用程序中引用此资源,则可以将该资源字典合并到您的App.xaml中:

<Application x:Class="WpfApp1.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Dictionary1.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

...并使用StaticResource标记扩展名从任何视图引用资源:

 <Label Content="{Binding Rank}" Foreground="{StaticResource myBrush}"></Label>

答案 1 :(得分:1)

可以使用static扩展名引用const属性或字段(包括{x:Static ...}字段)。对于Config类,应为:

<Label Content="{Binding Rank}" Foreground="{x:Static myNameSpace:Config.MyGreen}"/>

xaml文件应包含Config类(xmlsns:myNameSpace="....")的名称空间定义

但是,可重用元素通常定义为“资源”。在应用程序中可见的资源在App.xaml中定义:

<Application.Resources>
    <SolidColorBrush x:Key="MyGreen" Color="#46BF6E"/>
    <SolidColorBrush x:Key="MyRed" Color="#D14836"/>        
    <SolidColorBrush x:Key="MyBlue" Color="#428BCA"/> 
</Application.Resources>

可以从StaticResource / DynamicResource扩展名使用此类资源:

<Label Content="{Binding Rank}" Foreground="{StaticResource MyGreen}"/>