我怎么能用WPF / DataBinding实现这个列表框?

时间:2013-01-30 18:22:37

标签: wpf data-binding listbox

我有一个带有列表框的HTML表单,用户可以从列表框中选择标准自行车轮胎尺寸列表。每个尺寸在内部映射到一些数值,使数据源成为一个字典(键/值对的映射)。

javascript实现如下,我想在WPF中使用数据绑定(在我的域模型类中定义字典/枚举)具有相同的行为:

<select name="tiresize" id="tiresize"
    onchange="calcula();" style="width: 100px">
    <option value="305">26 X 1.0 (559 mm)</option>
    <option value="311">26 x 1 (650C)</option>
    <option value="312">26 X 1.5</option>
    <option value="324">26 X 1.9</option>
    <option value="330">26 X 1 3/8 (590 mm)</option>
    <option value="340">27 X 1</option>
    <option value="342">27 X 1 1/8</option>
    <option value="343">27 X 1 1/4</option>
    <option value="345">27 X 1 3/8</option>
    <option value="330">26 X 2.125</option>
    <option value="332">700 x 21</option>
    <option value="334" selected="selected">700 x 23</option>
    <option value="335">700 x 25</option>
    <option value="336">700 x 28</option>
    <option value="342">700 x 32</option>
    <option value="345">700 x 35</option>
    <option value="347">700 x 38</option>
    <option value="354">700 x 44</option>
    <option value="365">700 x 50</option>
    <option value="370">700 x 56</option>
</select>

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

首先需要将包含ListBox的某些东西(Window,Grid等)的DataContext设置为包含Dictionary的类的实例。您可以在XAML或代码中执行此操作。然后:

<ListBox ItemsSource="{Binding MyDictionaryProperty}" DisplayMemberPath="Key"
         SelectedValuePath="Value" SelectedValue="{Binding wheelRadius}"/>

只要wheelRadius的类型为int且具有公共设置器,就会使用SelectedItem的值属性(感谢SelectedValuePath)并将其推送到SelectedValue },这会将wheelRadius属性设置为TwoWay BindingSelectedValueSelectedItem和其他一些属性的默认值。