您可以在c#wpf中访问在XAML中创建的渐变颜色吗

瑞安·阿奇博尔德(Ryan Archibald)

可能存在类似的问题,但似乎没有一个有用的问题。因此,我将尝试解释一个更具体的案例,看看是否有人可以帮助我。

我有一个带有渐变背景标签的应用程序。我使用XAML创建了渐变背景,我的程序将背景更改为精细,但我希望在用户单击“重置”按钮后将背景更改回“正常”。我该怎么做对wpf还是陌生的?XAML “ LinearGradientBrush x:Key =” headerBackground“中的代码是我想在后面的代码中访问的代码

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:syncfusion="http://schemas.syncfusion.com/wpf" x:Class="ItemWrapPanel.MainWindow"
    Title="MainWindow" Height="350" Width="600">
<Window.Resources>
    **<LinearGradientBrush x:Key="headerBackground" StartPoint="0,0" EndPoint="0,1">
        <GradientStop Color="#FFEFEEEE" Offset="0"/>
        <GradientStop Color="#E7E7E7E7" Offset="1"/>
    </LinearGradientBrush>**
    <LinearGradientBrush x:Key="selectedHeaderBackground" StartPoint="0,0" EndPoint="0,1">
        <GradientStop Color="#F6CD1D" Offset="0"/>
        <GradientStop Color="#EBA32A" Offset="1"/>
    </LinearGradientBrush>
</Window.Resources>
<Grid x:Name="MainGrid">
    <Grid.RowDefinitions>
        <RowDefinition x:Name="Row1"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition x:Name="Col1"/>
        <ColumnDefinition x:Name="Col2"/>
        <ColumnDefinition x:Name="Col3"/>
    </Grid.ColumnDefinitions>
    <Label x:Name="Label1"
        Content="Rock Properties"
        Grid.Row="0"
        Grid.Column="0"
        MouseDoubleClick="Label1_MouseDoubleClick"
        Background="{DynamicResource headerBackground}"
        VerticalAlignment="Top"/>
    <Label x:Name="Label2"
        Content="Contacts"
        Grid.Column="1"
        Grid.Row="0"
        Background="{DynamicResource headerBackground}"
        MouseDoubleClick="Label2_MouseDoubleClick" 
        Margin="0,0,0,282"
        VerticalAlignment="Top"/>
    <Label x:Name="Label3"
        Content="Fluid Properties"
        Grid.Column="2"
        Background="{DynamicResource headerBackground}"
        Grid.Row="0"
        MouseDoubleClick="Label3_MouseDoubleClick" 
        Margin="0,0,0,282"
        VerticalAlignment="Top"/>
    <Button x:Name="Resetbtn" Content="Reset" HorizontalAlignment="Left" Margin="0,70,0,0" VerticalAlignment="Top" Width="75" Click="Reset_Click" Background="{DynamicResource selectedHeaderBackground}"/>
    <Button Name="CloseRock" Content="X" HorizontalAlignment="Left" Margin="173,4,0,0" VerticalAlignment="Top" Width="24" Grid.Column="0"/>
    <Button Name="CloseContacts" Content="X" HorizontalAlignment="Left" Margin="174,2,0,0" VerticalAlignment="Top" Width="24" Grid.Column="1"/>
    <Button Name="CloseFluid" Content="X" HorizontalAlignment="Left" Margin="173,2,0,0" VerticalAlignment="Top" Width="24" Grid.Column="2"/>
</Grid>

C#

 private ColumnDefinition SelectedColumn;
    private Color selectedHeaderBackground = (Color)ColorConverter.ConvertFromString("#EBA32A");

    public MainWindow()
    {
        InitializeComponent();
    }

    private void Label1_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        SelectedColumn = Col1;
        SetCol1Header();
        SetColumnWidth();
        SetColumnWidthCol1();
    }

    private void Label2_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        SelectedColumn = Col2;
        SetCol2Header();
        SetColumnWidth();
        SetColumnWidthCol2();
    }

    private void Label3_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        SelectedColumn = Col3;
        SetCol3Header();
        SetColumnWidth();
        SetColumnWidthCol3();
    }

    public void SetColumnWidth()
    {
        SelectedColumn.Width = new GridLength(1, GridUnitType.Star);
    }

    private void Reset_Click(object sender, RoutedEventArgs e)
    {
        ResetHeaderBackground();
        ResetColumnWidth();
        ResetColumns();
    }

    private void ResetColumns()
    {
        Label1.Visibility = System.Windows.Visibility.Visible;
    }

    private void ResetColumnWidth()
    {
        Col1.Width = new GridLength(1, GridUnitType.Star);
        Col2.Width = new GridLength(1, GridUnitType.Star);
        Col3.Width = new GridLength(1, GridUnitType.Star);
    }

    private void ResetHeaderBackground()
    {
        //Label3.Background = new SolidColorBrush(HeaderBackground);
        //Label2.Background = new SolidColorBrush(HeaderBackground);
        //Label1.Background = new SolidColorBrush(HeaderBackground);
    }

    private void MinimiseRock_Click(object sender, RoutedEventArgs e)
    {
        MinimiseWindow();
    }

    private void MinimiseContacts_Click(object sender, RoutedEventArgs e)
    {
        MinimiseWindow();
    }

    private void MinimiseFluid_Click(object sender, RoutedEventArgs e)
    {
        MinimiseWindow();
    }

    private void MinimiseWindow()
    {
        this.WindowState = WindowState.Minimized;
    }

    private void SetCol1Header()
    {
        Label1.Background = new SolidColorBrush(selectedHeaderBackground);
    }

    private void SetCol2Header()
    {
        Label2.Background = new SolidColorBrush(selectedHeaderBackground);
    }

    private void SetCol3Header()
    {
        Label3.Background = new SolidColorBrush(selectedHeaderBackground);
    }

    private void SetColumnWidthCol1()
    {
        Col2.Width = new GridLength(150);
        Col3.Width = new GridLength(150);
    }

    private void SetColumnWidthCol2()
    {
        Col1.Width = new GridLength(150);
        Col3.Width = new GridLength(150);
    }

    private void SetColumnWidthCol3()
    {
        Col1.Width = new GridLength(150);
        Col2.Width = new GridLength(150);
    }

}
科尼格

您可以通过调用FindResource提供您为Brush设置的键(然后将其强制转换为LinearGradientBrush)来访问窗口的资源。

this.Label1.Background = (LinearGradientBrush)this.FindResource("headerBackground")

欢呼声。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#WPF中的随机颜色

来自分类Dev

C#WPF中的随机颜色

来自分类Dev

您可以在 C++ 中动态创建 for 循环吗?

来自分类Dev

C#WPF在XAML中添加KeyBinding事件

来自分类Dev

如何使用XAML在C#WPF中绘制弹簧

来自分类Dev

访问XAML WPF中创建的UI元素

来自分类Dev

您可以在XAML的其他属性中引用属性吗?

来自分类Dev

您可以在Material UI中添加其他颜色吗?

来自分类Dev

如何从C#WPF中的页面访问MainWindow变量?

来自分类Dev

您可以仅使用 CSS 创建此渐变条吗?

来自分类Dev

Android:您可以在DoInBackground中访问AsyncTask类成员吗?

来自分类Dev

您可以在命令中访问SBT SettingKey吗?

来自分类Dev

您可以在VSCode片段中访问类名吗?

来自分类Dev

您可以在Google Cloud Composer中访问Airflow CLI吗?

来自分类Dev

您可以从Powershell中的PostCommandLookupAction访问/修改参数吗?

来自分类Dev

您可以在命令中访问SBT SettingKey吗?

来自分类Dev

如何在C#WPF中以编程方式创建DataGrid?

来自分类Dev

您可以在C#和Entity Framework中访问类的Scaffold属性属性吗?

来自分类Dev

我们可以在WPF XAML中为多个按钮创建单个Storyboard吗?

来自分类Dev

我们可以在WPF XAML中为多个按钮创建单个Storyboard吗?

来自分类Dev

您可以在H2中创建多个目录吗?

来自分类Dev

您可以在ZeroMQ中创建集中主题吗?

来自分类Dev

您可以在Swift中创建匿名内部类吗?

来自分类Dev

您可以在Android中创建.dat文件吗

来自分类Dev

您可以在函数中拦截并创建AxiosPromise吗?

来自分类Dev

您可以在H2中创建多个目录吗?

来自分类Dev

您可以在ZeroMQ中创建集中式主题吗?

来自分类Dev

您可以使用#define宏在C中创建文件吗?

来自分类Dev

您可以使用JNI在从Java调用的c ++函数中创建新的JVM吗?

Related 相关文章

  1. 1

    C#WPF中的随机颜色

  2. 2

    C#WPF中的随机颜色

  3. 3

    您可以在 C++ 中动态创建 for 循环吗?

  4. 4

    C#WPF在XAML中添加KeyBinding事件

  5. 5

    如何使用XAML在C#WPF中绘制弹簧

  6. 6

    访问XAML WPF中创建的UI元素

  7. 7

    您可以在XAML的其他属性中引用属性吗?

  8. 8

    您可以在Material UI中添加其他颜色吗?

  9. 9

    如何从C#WPF中的页面访问MainWindow变量?

  10. 10

    您可以仅使用 CSS 创建此渐变条吗?

  11. 11

    Android:您可以在DoInBackground中访问AsyncTask类成员吗?

  12. 12

    您可以在命令中访问SBT SettingKey吗?

  13. 13

    您可以在VSCode片段中访问类名吗?

  14. 14

    您可以在Google Cloud Composer中访问Airflow CLI吗?

  15. 15

    您可以从Powershell中的PostCommandLookupAction访问/修改参数吗?

  16. 16

    您可以在命令中访问SBT SettingKey吗?

  17. 17

    如何在C#WPF中以编程方式创建DataGrid?

  18. 18

    您可以在C#和Entity Framework中访问类的Scaffold属性属性吗?

  19. 19

    我们可以在WPF XAML中为多个按钮创建单个Storyboard吗?

  20. 20

    我们可以在WPF XAML中为多个按钮创建单个Storyboard吗?

  21. 21

    您可以在H2中创建多个目录吗?

  22. 22

    您可以在ZeroMQ中创建集中主题吗?

  23. 23

    您可以在Swift中创建匿名内部类吗?

  24. 24

    您可以在Android中创建.dat文件吗

  25. 25

    您可以在函数中拦截并创建AxiosPromise吗?

  26. 26

    您可以在H2中创建多个目录吗?

  27. 27

    您可以在ZeroMQ中创建集中式主题吗?

  28. 28

    您可以使用#define宏在C中创建文件吗?

  29. 29

    您可以使用JNI在从Java调用的c ++函数中创建新的JVM吗?

热门标签

归档