【问题标题】:How could I implement this listbox with WPF/DataBinding?如何使用 WPF/DataBinding 实现此列表框?
【发布时间】:2013-01-30 18:22:36
【问题描述】:

我有一个带有列表框的工作 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>

感谢您的帮助!

【问题讨论】:

    标签: wpf data-binding listbox


    【解决方案1】:

    您首先需要将包含您的 ListBox 的对象(窗口、网格等)的 DataContext 设置为包含 Dictionary 的类的实例。您可以在 XAML 或代码中执行此操作。那么:

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

    只要wheelRadius 是int 类型并且有一个公共设置器,这将获取SelectedItem 的Value 属性(感谢SelectedValuePath)并将其推送到SelectedValue,这将设置您的@987654326 @ 属性通过TwoWay BindingSelectedValueSelectedItem 和其他一些的默认值)。

    【讨论】:

    • 您能否详细说明将选定值绑定到另一个模型属性的过程?例如,我的模型中有wheelRadius 属性应该接收与用户选择的人类可读字符串键对应的int。对不起n00bness...
    猜你喜欢
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 2016-08-18
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多