簡體   English   中英

在WPF中保存單擊按鈕的用戶顏色設置

[英]Saving user color settings of a clicked Button in WPF

保存按鈕的某些屬性時,我有點問題。 按鈕很小,有多種顏色。 當我按下一個按鈕時,某些指定的顏色正在改變...,我想保存它們以便下次啟動。 文本框值我可以保存它們,但是...我不能。

碼:

public MainWindow()
{
    InitializeComponent();

    //blueColor.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
    //this.Property = Properties.Settings.Default.userColor;
}

private void blueColor_Click(object sender, RoutedEventArgs e)
{
    var bc = new BrushConverter();
    Main.Background = (Brush)bc.ConvertFrom("#FF007CE4");

    startButton.Foreground = (Brush)bc.ConvertFrom("#FF007CE4");
    closeButton.Foreground = (Brush)bc.ConvertFrom("#FF007CE4");
    Properties.Settings.Default.userColor = true;
    Properties.Settings.Default.Save();
}

private void purpleColor_Click(object sender, RoutedEventArgs e)
{
    var bc = new BrushConverter();
    Main.Background = (Brush)bc.ConvertFrom("#FF8701B9");
    startButton.Foreground = (Brush)bc.ConvertFrom("#FF8701B9");
    closeButton.Foreground = (Brush)bc.ConvertFrom("#FF8701B9");
}

我認為我需要保存最后一次單擊的Button,因為我有多種顏色,也許.RaiseEvent可以在這里提供幫助。

它是這樣的:

在此處輸入圖片說明

這三個小按鈕:

  • 白色
  • 藍色
  • 紅色

用於更改程序的外觀。 每次啟動時,默認值都返回。

您可以將顏色存儲為簡單的字符串, TypeConverter自動將其轉換為Brush類型。 下面是一個例子。

綁定來自XAML的默認值:

xmlns:properties="clr-namespace:WorkWithSettings.Properties"

<Button Width="100" Height="30"
        Background="{Binding Source={x:Static properties:Settings.Default}, Path=Setting, Mode=TwoWay}" />

通過代碼設置值:

private void Button_Click(object sender, RoutedEventArgs e)
{
    WorkWithSettings.Properties.Settings.Default.Setting = "#FF007CE4";
}

Note:設置-這只是String的類型。

您可以在此處查看更多信息:

TypeConverters和XAML

Edit:

在下面,我將向您展示一個示例,希望對您有所幫助。

因此,進入項目的設置: Project -> Properties -> Parameters 這將打開大約一個窗口:

在此處輸入圖片說明

在這里,我們有一個屬性ButtonColor ,在設置中定義。 例如,我選擇了Button ,它根據所按下按鈕的顏色來改變背景。

為了屬性Background與設置同步,請執行以下操作:

<Button Width="100" Height="30" 
        Content="TestButton" 
        Background="{Binding Source={x:Static properties:Settings.Default}, Path=ButtonColor, Mode=TwoWay}" />

白色的默認背景色。 現在,要在按鈕上設置背景色,我們可以更改參數設置,如下所示:

private void Blue_Click(object sender, RoutedEventArgs e)
{
    WorkWithSettings.Properties.Settings.Default.ButtonColor = "Blue";
}

要保存對設置的更改,您需要調用方法Save()

private void Save_Click(object sender, RoutedEventArgs e)
{
    WorkWithSettings.Properties.Settings.Default.Save();
}

現在,下次啟動程序時,顏色將是最后設置的顏色。

Full example

XAML

<Window x:Class="WorkWithSettings.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:properties="clr-namespace:WorkWithSettings.Properties"
    WindowStartupLocation="CenterScreen"
    Title="MainWindow" Height="350" Width="525">

    <Grid>
        <TextBlock Width="100" Height="30" Text="{Binding Source={x:Static properties:Settings.Default}, Path=ButtonColor, Mode=TwoWay}" Margin="0,60,0,0" />
        <Button Width="100" Height="30" Content="TestButton" Background="{Binding Source={x:Static properties:Settings.Default}, Path=ButtonColor, Mode=TwoWay}" />

        <WrapPanel>           
            <Button Name="Blue" Width="100" Height="30" Content="BlueColor" VerticalAlignment="Top" Click="Blue_Click" />
            <Button Name="Red" Width="100" Height="30" Content="RedColor" VerticalAlignment="Top" Click="Red_Click" />
            <Button Name="White" Width="100" Height="30" Content="WhiteColor" VerticalAlignment="Top" Click="White_Click" />
        </WrapPanel>

        <Button Name="Save" Width="60" Height="30" Content="Save" VerticalAlignment="Top" HorizontalAlignment="Right" Click="Save_Click" />
    </Grid>
</Window>

Code behind

namespace WorkWithSettings
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void White_Click(object sender, RoutedEventArgs e)
        {
            WorkWithSettings.Properties.Settings.Default.ButtonColor = "White";
        }

        private void Blue_Click(object sender, RoutedEventArgs e)
        {
            WorkWithSettings.Properties.Settings.Default.ButtonColor = "Blue";
        }

        private void Red_Click(object sender, RoutedEventArgs e)
        {
            WorkWithSettings.Properties.Settings.Default.ButtonColor = "Red";
        }

        private void Save_Click(object sender, RoutedEventArgs e)
        {
            WorkWithSettings.Properties.Settings.Default.Save();
        }
    }
}

Output

在此處輸入圖片說明

您可能需要在項目的“ Settings選項卡中創建項,以存儲有關顏色的信息。 我建議存儲十六進制字符串。 然后,在MainForm_Load檢索這些值。

確保將設置也放入“ User范圍,否則每次關閉應用程序時它們都會重置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM