Có cách nào tốt để ràng buộc một thuộc tính với một giá trị const trong codebehind không?Ràng buộc thành viên const trong mã phía sau từ xaml trong WPF
Khi tôi sử dụng ComboBox, tôi thường làm theo cách này trong XAML và mã sau:
XAML:
<ComboBox Name="cbBuz">
<ComboBoxItem Content="foo" Uid="foo" IsSelected="true" />
<ComboBoxItem Content="bar" Uid="bar" />
</ComboBox>
codebehind:
ComboBoxItem item = cbBuz.GetSelectedItem();
switch (item.Uid)
{
case "foo": ... break;
case "bar": ... break;
}
Lý do tại sao tôi đã chọn cách này là như sau:
- Cho l mục đích ocalization, chuỗi nội dung không nên được sử dụng để xác định mục nào được chọn trong khi lưu và tải một mục được chọn cuối cùng.
- Để đơn giản, XAML và mã phía sau phải được kết nối với số nhận dạng nội bộ (Trong trường hợp này là Uid). Vì vậy, XAML và Code-behind có thể được duy trì riêng biệt.
Tuy nhiên, bảo dưỡng-khôn ngoan, nhận dạng nội bộ nên được quy định tại một nơi như thế này:
//IDs
public const string ID_foo = "foo";
public const string ID_bar = "bar";
...
//
switch (item.Uid)
{
case ID_foo: ... break;
case ID_bar: ... break;
}
Vấn đề là dường như bất động sản không thể giá trị const, do đó không có cách nào để ràng buộc ID_foo và ID_bar thành Uid của ComboBoxItem như sau:
//If ID_foo and ID_bar are properties, this will work.
<ComboBox Name="cbBuz">
<ComboBoxItem Content="foo" Uid="{Binding ID_foo}" IsSelected="true" />
<ComboBoxItem Content="bar" Uid="{Binding ID_bar}" />
</ComboBox>
Vì vậy, tôi muốn biết cách giải quyết vấn đề này. Hoặc, có cách nào tốt hơn để triển khai nó hay không. Nó sẽ là tốt đẹp, quá.
nhất,
Cảm ơn rất nhiều! Đây chính là điều tôi muốn!Ngoài ra, thông tin liên quan đến rò rỉ và chi phí thực sự hữu ích. – Aki24x