0

我是 WPF 的新手,使用 DevExpress MVVM,我有一个静态组合框,当用户选择一天时,我想通过传递一个 int 日并进行数据库调用以刷新该组合框来更新第二个组合框,路由基于关闭那天。这是我所拥有的:

-->

    <Label Content="Route:" Grid.Column="2" Grid.Row="1" Height="28" HorizontalAlignment="Left" Margin="9,60,0,0" Name="lblRoute" VerticalAlignment="Top" />
    <ComboBox Grid.Column="2" Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="127,65,0,0" Name="cboRoute" VerticalAlignment="Top" Width="120" 
                DataContext="{Binding}" ItemsSource="{Binding Path=RouteList}"  DisplayMemberPath="{Binding RouteName}" SelectedValue="{Binding RouteID}" Grid.ColumnSpan="2" 
              IsSynchronizedWithCurrentItem="true"/>

视图模型:

 public ObservableCollection<RouteTest> BindRouteComboBox2(int day)
     {
          mgr = new SRMSRailManagerBLL();
        mgr.OpenConnection(ConfigurationManager.ConnectionStrings["SRMSSqlProvider"].ConnectionString);
        //might not want to pass dataset
        _routeDS = mgr.getRoutesForCombo(day);
        _routeDV = _routeDS.Tables[0].DefaultView;
        //cboRoute.ItemsSource = ds.Tables[0].DefaultView;
        //cboRoute.DisplayMemberPath = ds.Tables[0].Columns["RouteName"].ToString();
        //cboRoute.SelectedValuePath = ds.Tables[0].Columns["RouteID"].ToString();
        _routeList = new ObservableCollection<RouteTest>();
        foreach (DataRow row in _routeDV.Table.Rows)
        {
            RouteTest r = new RouteTest(Convert.ToInt32(row.ItemArray[0]), row.ItemArray[1].ToString());
            _routeList.Add(r);

        }


        mgr.CloseConnection();
         return _routeList;

当我单击我的第一个组合框时,我的 _SelectionChanged() 中填充了“星期一”,我想要的是“1”的标记值,以便我可以传递给我的 BindRouteComboBox(day) 过程来更新第二个组合框只显示第 1 天的路线,而不是我的数据库表中的每条路线。这应该很简单,我必须在这里遗漏一些简单的东西。

谢谢,

4

1 回答 1

0

嗨使用 SelectedValue 而不是 SelectedValuePath

string temp = (sender as ComboBox).SelectedValue.ToString();
于 2013-07-25T17:12:44.370 回答