Wpf 有没有办法从xaml调用外部函数?
有没有办法直接从xaml调用外部对象(例如资源对象)的方法 我的意思是这样的:Wpf 有没有办法从xaml调用外部函数?,wpf,xaml,resources,methods,call,Wpf,Xaml,Resources,Methods,Call,有没有办法直接从xaml调用外部对象(例如资源对象)的方法 我的意思是这样的: <Grid xmlns:dm="clr-namespace:MyNameSpace;assembly=MyAssembly"> <Grid.Resources> <dm:TimeSource x:Key="timesource1"/> </Grid.Resources> <Button Click="timesource_up
<Grid xmlns:dm="clr-namespace:MyNameSpace;assembly=MyAssembly">
<Grid.Resources>
<dm:TimeSource x:Key="timesource1"/>
</Grid.Resources>
<Button Click="timesource_updade">Update time</Button>
</Grid>
timesource_update方法当然是timesource对象的方法
我需要使用纯XAML,而不是任何代码。检查线程,它也有类似的问题。通常不能直接从xaml调用方法。
您可以使用命令,也可以从xaml创建一个对象,该对象将在线程上创建一个方法,该方法将在需要时自行处理
但是我恐怕你不能用纯XAML来做。在C语言中,您可以在XAML中做任何事情,但不能反过来做。您只能从XAML中执行一些在C中可以执行的特定操作。检查线程,它也有类似的问题。通常不能直接从xaml调用方法。
您可以使用命令,也可以从xaml创建一个对象,该对象将在线程上创建一个方法,该方法将在需要时自行处理
但是我恐怕你不能用纯XAML来做。在C语言中,您可以在XAML中做任何事情,但不能反过来做。您只能从XAML中执行一些在C中可以执行的特定操作。好的,这里是最终解决方案 XAML:
时间源必须从UIElement派生才能具有CommandBinding。但结果是直接从XAML调用外部组装方法。通过单击按钮,将调用对象timesource1的“UpdateExecuted”方法,这正是我想要的。好的,这里是最终解决方案 XAML:
时间源必须从UIElement派生才能具有CommandBinding。但结果是直接从XAML调用外部组装方法。通过单击按钮,调用对象timesource1的“UpdateExecuted”方法,这正是我想要的。这为我指明了一个非常好的方向。谢谢你的帮助,看看下面我的最终解决方案。这为我指明了明确的方向。谢谢你的帮助,看看下面我的最终解决方案。这能回答你的问题吗?这回答了你的问题吗?
<Grid xmlns:dm="clr-namespace:MyNameSpace;assembly=MyAssembly">
<Grid.Resources>
<dm:TimeSource x:Key="timesource1"/>
</Grid.Resources>
<Button Command="{x:Static dm:TimeSource.Update}"
CommandParameter="any_parameter"
CommandTarget="{Binding Source={StaticResource timesource1}}">Update time</Button>
</Grid>
public class TimeSource : System.Windows.UIElement {
public static RoutedCommand Update = new RoutedCommand();
private void UpdateExecuted(object sender, ExecutedRoutedEventArgs e)
{
// code
}
private void UpdateCanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
}
// Constructor
public TimeSource() {
CommandBinding cb = new CommandBinding(TimeSource.Update, UpdateExecuted, UpdateCanExecute);
CommandBindings.Add(cb2);
}
}