Да, есть способ. Это некрасиво. Вы должны добавить атрибут xmlns:Commands в свой тег window1.xaml. В итоге я испортил код, который нашел в этой статье Code Project.
Является ли продукт, который вы хотите отобразить на этикетке, созданным при загрузке или в результате другого управляющего события?
Я не уверен, что это поможет вам, но я столкнулся с чем-то подобным, когда пытался динамически генерировать XAML с помощью XSLT. Мое решение сработало, вроде... ну, не совсем для того, что я пытался сделать. Но, возможно, это поможет вам.
Как я уже сказал, вы должны объявить xmlns в теге страницы, например:
<Page x:Class="WpfBrowserApplication1.Page1"
blah blah blah
xmlns:Commands="clr-namespace:WpfBrowserApplication1">
Затем определите статический класс в своем приложении с тем же пространством имен, почти таким же, как пример в статье Code Project, с обработчиками для RoutedUICommand:
namespace WpfBrowserApplication1
{
public static class CommandHandlers
{
private static System.Windows.Input.RoutedUICommand _submitCommand;
static CommandHandlers()
{
_submitCommand = new System.Windows.Input.RoutedUICommand("Submit", "SubmitCommand", typeof(CommandHandlers));
}
public static void BindCommandsToPage(System.Windows.Controls.Page caller)
{
caller.CommandBindings.Add(new System.Windows.Input.CommandBinding(SubmitCommand, SubmitContact_Executed, SubmitContact_CanExecute));
}
public static System.Windows.Input.RoutedUICommand SubmitCommand
{
get { return _submitCommand; }
}
public static void SubmitContact_Executed(object sender, System.Windows.Input.ExecutedRoutedEventArgs e)
{
...do stuff...
}
public static void SubmitContact_CanExecute(object sender, System.Windows.Input.CanExecuteRoutedEventArgs e)
{
if (e.Source is System.Windows.Controls.Button)
e.CanExecute = true;
else
e.CanExecute = false;
}
}
}
Неприятная часть заключается в том, что, насколько я обнаружил, единственный способ отобразить вещи обратно в Page1.xaml — это привести объект-отправитель и копаться в элементах пользовательского интерфейса страницы, подобно тому, как вы копались бы в DOM. на веб-странице. Я добился некоторого успеха в этом, но, конечно, не претендую на роль эксперта.
Последнее, что вам нужно сделать, это подключить элемент управления в Page1.xaml.cs. В XAML вы делаете это так:
<Button Name="btnSubmit" Command="Commands:CommandHandlers.SubmitCommand" etc... />
В коде, например так:
private void Page_Loaded(object sender, RoutedEventArgs e)
{
CommandHandlers.BindCommandsToPage(this);
}
Я надеюсь, что это поможет, и удачи.
person
AJ.
schedule
10.11.2008