いつもお世話になります。
Rectangleの線の色などを、コンボボックスで選んだ値に変更しようと思っています。
色変更は出来るようになったのですが、
Rectangleを動的生成する際にswitch~caseを利用すると、どんどん行数が伸びていき
少々取り扱いがしづらい状況になります。
前提・実現したいこと
コンボボックス(BordColorC)には、Red、BlueなどのStringの値が選択されるようになっており
その値を元に塗りつぶしや線の色を設定したいと思っています。
var MyColor = BordColorC.SelectedItem.ToString();
Rectan.Stroke = Brushes.MyColor;
こんな感じで設定できるのが最適だったのですが、出来ません。
Switchなどで判定していくしか方法はないでしょうか?
何かいい方法はないでしょうか?
昨日一日中調べてましたが、いい方法は見つかりませんでした。
いい方法があれば教えてください。よろしくお願いいたします。
該当のソースコード
//DefaultSetting.xaml <Grid> <Grid.RowDefinitions> <RowDefinition Height="8*"></RowDefinition> <RowDefinition Height="2*"></RowDefinition> </Grid.RowDefinitions> <Rectangle Name="Rectan" VerticalAlignment="Center" HorizontalAlignment="Center" Height="100" Stroke="Black" Width="120" StrokeThickness="2"/> <StackPanel Grid.Row="1" Orientation="Horizontal"> <TextBlock Text="線の色" VerticalAlignment="Center"></TextBlock> <ComboBox Name="BordColorC" ItemsSource= "{StaticResource Colors}" SelectedValue="{Binding DefoBordColor, UpdateSourceTrigger=PropertyChanged}" SelectionChanged="BordColorC_SelectionChanged" Width="50" /> </StackPanel> </Grid>
//DefaultSetting.cs private void BordColorC_SelectionChanged(object sender, SelectionChangedEventArgs e) { var MyColor = BordColorC.SelectedItem.ToString(); switch (MyColor) { case "Red": Rectan.Stroke = Brushes.Red; break; case "Blue": Rectan.Stroke = Brushes.Blue; break; case "Green": Rectan.Stroke = Brushes.Green; break; case "White": Rectan.Stroke = Brushes.White; break; case "Black": Rectan.Stroke = Brushes.Black; break; case "NoColor": Rectan.Stroke = Brushes.Transparent; break; default: break; }
//DefoData.cs public class DefoltData { public static string DefoBordColor { get { return Properties.Settings.Default.DefaBordColor; } set { Properties.Settings.Default.DefaBordColor=value; } } }
試したこと
var MyColor = BordColorC.SelectedItem.ToString(); Rectan.Stroke = Brushes.MyColor;
→もちろん失敗
https://teratail.com/questions/129747
[wpf] drawing.colorからwindows.media.brushへの変換
参考になりそうですが、あまりよく分かっていません。
動作はしそうですが、Switchで判定しないといけないのは
変わりないかなと思っています。確認中です。
補足情報(FW/ツールのバージョンなど)
VisualStudio 2019
.NET 4.5(だったはず)
WPF C# (※ WinFormではない)
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/06/21 05:22
2021/06/21 10:04