为了账号安全,请及时绑定邮箱和手机立即绑定

绑定到WPF中的方法?

绑定到WPF中的方法?

心有法竹 2019-10-17 16:29:16
在这种情况下,如何在WPF中绑定到对象方法?public class RootObject{    public string Name { get; }    public ObservableCollection<ChildObject> GetChildren() {...}}public class ChildObject{    public string Name { get; }}XAML:<TreeView ItemsSource="some list of RootObjects">    <TreeView.Resources>        <HierarchicalDataTemplate DataType="{x:Type data:RootObject}"                                   ItemsSource="???">            <TextBlock Text="{Binding Path=Name}" />        </HierarchicalDataTemplate>        <HierarchicalDataTemplate DataType="{x:Type data:ChildObject}">            <TextBlock Text="{Binding Path=Name}" />        </HierarchicalDataTemplate>    </TreeView.Resources></TreeView>在这里,我想绑定到每棵树上的GetChildren方法RootObject。EDIT绑定到ObjectDataProvider似乎无效,因为我正在绑定到项目列表,并且ObjectDataProvider需要一个静态方法,或者它创建了自己的实例并使用该实例。例如,使用马特的答案,我得到:System.Windows.Data错误:33:ObjectDataProvider无法创建对象。Type ='RootObject'; 错误=“构造函数的参数错误。”System.Windows.Data错误:34:ObjectDataProvider:尝试在类型上调用方法失败;方法='GetChildren'; Type ='RootObject'; 错误='无法在目标上调用指定的成员。TargetException:'System.Reflection.TargetException:非静态方法需要一个目标。
查看完整描述

3 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

不知道它在您的方案中将如何工作,但是您可以使用ObjectDataProvider上的MethodName属性来使其调用特定方法(如果使用MethodParameters属性,则使用特定参数)来检索其数据。


这是直接从MSDN页面获取的代码段:


<Window.Resources>

    <ObjectDataProvider ObjectType="{x:Type local:TemperatureScale}"

        MethodName="ConvertTemp" x:Key="convertTemp">

        <ObjectDataProvider.MethodParameters>

            <system:Double>0</system:Double>

             <local:TempType>Celsius</local:TempType>

        </ObjectDataProvider.MethodParameters>

    </ObjectDataProvider>

</Window.Resources>

因此,这是一个ObjectDataProvider,它在“ TemperatureScale”类的实例上调用“ ConvertTemp”方法,并传递两个参数(0和TempType.Celsius)。


查看完整回答
反对 回复 2019-10-17
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

您必须绑定该方法吗?


您可以将方法绑定到谁是吸气剂的属性吗?


public ObservableCollection<ChildObject> Children

{

   get

   {

      return GetChildren();

   }

}


查看完整回答
反对 回复 2019-10-17
  • 3 回答
  • 0 关注
  • 857 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信