Поэтому по какой-то причине я не могу включить кнопку. Я использую второй и последний пример в пользовательском элементе управления Pickers (MaterialDesignInXamlToolkit ) - https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit/blob/master/MainDemo.Wpf/Pickers.xaml
Согласно приложенному изображению, это то, что я вижу, когда запускаю следующий код (исходный):
<StackPanel Orientation = "Horizontal" Margin = "0 25 0 15" HorizontalAlignment = "Center" IsEnabled = "True">
<TextBlock Foreground = "{DynamicResource MaterialDesignBodyLight}" Text = "{Binding Date, StringFormat=d}" VerticalAlignment = "Center" FontSize = "24" />
<Button Margin = "8 0 0 0" Content = "..."
IsEnabled = "True"
materialDesign:DialogHost.DialogOpenedAttached = "CalendarDialogOpenedEventHandler"
materialDesign:DialogHost.DialogClosingAttached = "CalendarDialogClosingEventHandler"
Command = "{x:Static materialDesign:DialogHost.OpenDialogCommand}">
<Button.CommandParameter>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height = "Auto" />
<RowDefinition Height = "Auto" />
</Grid.RowDefinitions>
<Calendar x:Name = "Calendar" Margin = "-1 -4 -1 0" />
<StackPanel Grid.Row = "1" Margin = "8" HorizontalAlignment = "Right" Orientation = "Horizontal">
<Button Command = "{x:Static materialDesign:DialogHost.CloseDialogCommand}" IsDefault = "True" CommandParameter = "1" Style = "{DynamicResource MaterialDesignFlatButton}">OK</Button>
<Button Command = "{x:Static materialDesign:DialogHost.CloseDialogCommand}" IsCancel = "True" CommandParameter = "0" Style = "{DynamicResource MaterialDesignFlatButton}">CANCEL</Button>
</StackPanel>
</Grid>
</Button.CommandParameter>
</Button>
Я просмотрел этот похожий пост, но не выиграл - Кнопки диалогового окна MaterialDesignXamlToolkit wpf отключаются при открытии
xaml.cs:
public void CalendarDialogOpenedEventHandler(object sender, DialogOpenedEventArgs eventArgs)
{
Calendar.SelectedDate = ((ClientIntroViewModel)DataContext).Date;
}
public void CalendarDialogClosingEventHandler(object sender, DialogClosingEventArgs eventArgs)
{
if (!Equals(eventArgs.Parameter, "1")) return;
if (!Calendar.SelectedDate.HasValue)
{
eventArgs.Cancel();
return;
}
((ClientIntroViewModel)DataContext).Date = Calendar.SelectedDate.Value;
}
Последний XAML:
<StackPanel Orientation = "Horizontal" Margin = "0 25 0 0" HorizontalAlignment = "Center" IsEnabled = "True">
<Label Foreground = "{DynamicResource MaterialDesignBodyLight}" VerticalAlignment = "Center" Margin = "0,0,5,0">Birth Date:</Label>
<TextBlock Foreground = "{DynamicResource MaterialDesignBodyLight}" Text = "{Binding Date, StringFormat=d}" VerticalAlignment = "Center" FontSize = "24" />
<Button Margin = "8 0 0 0" Content = "..."
IsEnabled = "True"
materialDesign:DialogHost.DialogOpenedAttached = "CalendarDialogOpenedEventHandler"
materialDesign:DialogHost.DialogClosingAttached = "CalendarDialogClosingEventHandler"
Command = "{x:Static materialDesign:DialogHost.OpenDialogCommand}"
CommandTarget = "{Binding ElementName=PopupAddCustom}">
</Button>
<materialDesign:DialogHost Name = "PopupAddCustom" HorizontalAlignment = "Center" VerticalAlignment = "Center" IsOpen = "False" >
<materialDesign:DialogHost.DialogContent>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height = "Auto" />
<RowDefinition Height = "Auto" />
</Grid.RowDefinitions>
<Calendar x:Name = "Calendar" Margin = "-1 -4 -1 0" />
<StackPanel Grid.Row = "1" Margin = "8" HorizontalAlignment = "Right" Orientation = "Horizontal">
<Button Command = "{x:Static materialDesign:DialogHost.CloseDialogCommand}" IsDefault = "True"
CommandParameter = "1" Style = "{DynamicResource MaterialDesignFlatButton}">OK</Button>
<Button Command = "{x:Static materialDesign:DialogHost.CloseDialogCommand}" IsCancel = "True"
CommandParameter = "0" Style = "{DynamicResource MaterialDesignFlatButton}">CANCEL</Button>
</StackPanel>
</Grid>
</materialDesign:DialogHost.DialogContent>
</materialDesign:DialogHost>
</StackPanel>
Вы не устанавливаете свойство CommandTarget
на Button
, поэтому оно не включено.
<Button Margin = "8 0 0 0" Content = "..."
IsEnabled = "True"
Command = "{x:Static materialDesign:DialogHost.OpenDialogCommand}"
CommandTarget = "{Binding ElementName=PopupAddCustom}">
</Button>
<materialDesign:DialogHost Name = "PopupAddCustom" HorizontalAlignment = "Center" VerticalAlignment = "Center" IsOpen = "False"
materialDesign:DialogHost.DialogOpenedCallback = "CalendarDialogOpenedEventHandler"
materialDesign:DialogHost.DialogClosingCallback = "CalendarDialogClosingEventHandler">
<materialDesign:DialogHost.DialogContent>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height = "Auto" />
<RowDefinition Height = "Auto" />
</Grid.RowDefinitions>
<Calendar x:Name = "Calendar" Margin = "-1 -4 -1 0" />
<StackPanel Grid.Row = "1" Margin = "8" HorizontalAlignment = "Right" Orientation = "Horizontal">
<Button Command = "{x:Static materialDesign:DialogHost.CloseDialogCommand}" IsDefault = "True"
CommandParameter = "1" Style = "{DynamicResource MaterialDesignFlatButton}">OK</Button>
<Button Command = "{x:Static materialDesign:DialogHost.CloseDialogCommand}" IsCancel = "True"
CommandParameter = "0" Style = "{DynamicResource MaterialDesignFlatButton}">CANCEL</Button>
</StackPanel>
</Grid>
</materialDesign:DialogHost.DialogContent>
</materialDesign:DialogHost>
@David Можете ли вы разместить код для ваших обработчиков событий? Они стреляют без проблем.
ты легенда! Глупая ошибка, лол, извини, долгий день. Огромное спасибо
@ Дэвид Добро пожаловать! Иногда хороший сон / сон решает все проблемы!
Отличный материал, спасибо! Календарь загружается, но CalendarDialogOpenedEventHandler () CalendarDialogClosingEventHandler () не запускается. Обновлен исходный пост с xaml.cs