我有一个GridView,带有这个项目模板(XAML):
<DataTemplate x:DataType="local:MyClass">
<TextBlock Text="{x:Bind MyString}"/>
<Button Command="{x:Bind command}"/>
</DataTemplate>
此处MyClass
(C ++ / CX)
public ref class MyClass sealed
{
public:
MyClass();
property Platform::String^ MyString
{
String^ get()
{
return mystring;
}
}
property ICommand^ command = ref new DelegateCommand(ref new ExecuteDelegate(this, &implementcommand), nullptr);
private:
String^ mystring;
void implementcommand(Platform::Object^ param);
}
DelegateCommand
函数从此示例中提取而不做任何修改:https://code.msdn.microsoft.com/windowsapps/Command-binding-inside-3cef5eea
现在,如果我点击gridview中的任何按钮,它将调用implementcommand
。但是,我想让implementcommand
对TextBlock控件执行某些操作,例如更改文本内容。从mainpage
类中的任何函数,如果它不在gridview内,它就像textBlock->Text = ref new String("hello");
一样简单但是,因为控件在gridview内部,而implementscommand函数是在MyClass
,而不是MainPage
,我不知道该怎么做。
答案 0 :(得分:0)
在DataTemplate的TextBlock中,将Text绑定到MyString属性,该属性(通过我看到的绑定判断)与命令存在于同一个类中。
您需要做的是
还有另一种方式(x:Bind之前的经典方式)