首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过传入方法参数通过objectdataprovider进行组合框ItemsSource

通过传入方法参数通过objectdataprovider进行组合框ItemsSource
EN

Stack Overflow用户
提问于 2012-09-27 07:44:25
回答 2查看 2K关注 0票数 2

我想从对象数据提供程序填充combobox控件项。对象数据提供程序调用我的自定义类上的一个方法来获取项目列表。

但是,我的自定义类上的方法需要一个参数,然后才能返回项目列表。我不知道该怎么做。

这是我的尝试:

对象数据提供程序声明:

代码语言:javascript
复制
<ObjectDataProvider x:Key="dataFromEnum" ObjectType="{x:Type ns:MyDataProvider}" MethodName="GetData">
            <ObjectDataProvider.MethodParameters>
                <sys:String>String.Empty</sys:String>
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>

ComboBox声明:

代码语言:javascript
复制
<ComboBox Name="combobox" ItemsSource="{StaticResource dataFromEnum}" Tag="{Binding Path=Name}" />

因此,如您所见,组合框的Tag属性被绑定到父级数据上下文的Name属性。我希望将该Name属性传递给对象数据提供程序。我不确定如何在向对象数据提供程序请求数据时将数据传递给对象数据提供程序。

请给我建议。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2012-09-27 11:04:27

有一些绑定到方法参数以调整其值的示例,但这在这里并不真正适用……

面对这个挑战,为什么不让ViewModel公开一个属性来绑定到组合控件的ItemsSource呢?

通常我会有这样的东西:

代码语言:javascript
复制
public MySomething SelectedSomething { get; set; }
public IEnumerable<MySomething> AvailableSomethings
{
  get { /* Access a factory method or something to return applicable list for this view model state */ }
}

然后绑定变成:

代码语言:javascript
复制
<ComboBox ItemsSource="{Binding path=AvailableSomethings}" SelectedItem="{Binding path=SelectedSomething}"/>
票数 0
EN

Stack Overflow用户

发布于 2012-09-27 23:00:25

在wpf中,您必须为您必须提供引用的更改的选择生成事件

代码语言:javascript
复制
clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity

 <ComboBox ItemsSource="{Binding UserSectionItems, Mode=TwoWay}" Margin="104,11,0,10" HorizontalAlignment="Left" Width="135" Name="UserCmd" >
            <l:Interaction.Triggers>
                <l:EventTrigger EventName="SelectionChanged">
                    <l:InvokeCommandAction Command="{Binding UserComboBoxSelectionCmd, Mode=TwoWay}" CommandParameter="{Binding ElementName=UserCmd,Path=SelectedItem}"/>
                </l:EventTrigger>
            </l:Interaction.Triggers>
        </ComboBox>

在您的视图模型中,如下所示

代码语言:javascript
复制
public RelayCommand<string> UserComboBoxSelectionCmd { get; set; }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12612085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档