2017-11-13 5 views
0

UIのチェックボックスを使って複数の項目を選択できるアプリケーションがあります。チェックボックスは、会社が検索の選択肢を追加したり削除したりするため、ファイルから生成されます。チェックボックスのCornerRadiusをコードの後ろに設定する

可能なすべての選択肢を取得するためにファイルを読み込んだので、XAMLではなくC#コードでチェックボックスが生成され、UIの要件の1つに丸めチェックボックスがあります。どのようにC#でこれを達成できますか?

私は、XAMLでこれをやった:

<CheckBox Content="QA Standard" IsEnabled="{Binding CanEdit, UpdateSourceTrigger=PropertyChanged}" 
     ToolTip="{Binding StatusInfo, UpdateSourceTrigger=PropertyChanged}" 
     BorderBrush="{Binding StatusColor, UpdateSourceTrigger=PropertyChanged}" 
     BorderThickness="2" 
     Margin="5" > 
<CheckBox.Resources> 
    <Style TargetType="{x:Type Border}"> 
     <Setter Property="CornerRadius" Value="12" /> 
    </Style> 
</CheckBox.Resources> 

は、C#で、それをやり直すことを試みたが、動作しているようですしません:

CheckBox c = new CheckBox() { BorderThickness = new Thickness(2), Content = b, Margin = new Thickness(5) }; 

var enabled = new Binding() { Source = DataContext, Path = new PropertyPath("CanEdit"), Mode = BindingMode.TwoWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged }; 
var tooltip = new Binding() { Source = DataContext, Path = new PropertyPath("StatusInfo"), Mode = BindingMode.TwoWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged }; 
var border = new Binding() { Source = DataContext, Path = new PropertyPath("StatusColor"), Mode = BindingMode.TwoWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged };    

BindingOperations.SetBinding(c, CheckBox.IsEnabledProperty, enabled); 
BindingOperations.SetBinding(c, CheckBox.ToolTipProperty, tooltip); 
BindingOperations.SetBinding(c, CheckBox.BorderBrushProperty, border); 

var cStyle = new Style(typeof(Border)); 
cStyle.Setters.Add(new Setter(Border.CornerRadiusProperty, new CornerRadius(12.0))); 
c.Resources.Add("CornerRadiusBorder", cStyle); 

Boxes.Children.Add(c); 
+1

CheckBoxを動的に生成するための適切なItemTemplateコードの背後にUI要素を作成することはほとんど必要ありません。 – Clemens

+0

@ mm8はい、XAMLで動作しますが、これをC#に変換してXAMLを終了すると、コーナーを除いて全く同じものが表示されます。 –

+0

@ mm8 Windows 10 @ _ @ –

答えて

1

ただ、リソースのキーを変更します。

var cStyle = new Style(typeof(Border)); 
cStyle.Setters.Add(new Setter(Border.CornerRadiusProperty, new CornerRadius(12.0))); 
c.Resources.Add(typeof(Border), cStyle); 
+0

優秀!思考キーは型ではなく一意の名前でした。 –

関連する問題