Quantcast
Channel: Ribbon for WPF - Recent Posts
Viewing all articles
Browse latest Browse all 1458

FontFamilyComboBox Commit not working on mouse selection

$
0
0

Hi,

 

im facing an issue with the FontFamilyComboBox.

 

I have the following code:

<ribbon:FontFamilyComboBox x:Name="FontFamilyComboBox"
                                   MinWidth="70" 
                                   Margin="2" 
                                           Command="{Binding FontFamilyCommand,
                                                             RelativeSource={RelativeSource Mode=FindAncestor,
                                                             AncestorType=local:FontCustomizer}}"
                             />

 

#Region "FontFamilyCommand"
        Private m_previousFont As String
        Private m_wasPreviewPreviewValueSet As Boolean = False
        ''' <summary>
        ''' Changes the font bold style.
        ''' </summary>
        Private Sub ChangeFontFamily(ByVal inputArg As FontFamilyValueCommandParameter)
            If inputArg IsNot Nothing Then
                If (inputArg.Value IsNot Nothing) AndAlso
                    ((Not Ribbon.Controls.FontFamilyComboBox.IsValidFontFamilyName(inputArg.Value.Source))) Then
                    MessageBox.Show(String.Format("The font family '{0}' does not exist.", inputArg.Value),
                                    "Invalid Font Family",
                                    MessageBoxButton.OK, MessageBoxImage.Exclamation)
                Else

                    Select Case inputArg.Action
                        Case ValueCommandParameterAction.CancelPreview
                            MyFont.FontFamily = m_previousFont
                            m_previousFont = String.Empty
                            m_wasPreviewPreviewValueSet = False

                        Case ValueCommandParameterAction.Commit
                            MyFont.FontFamily = inputArg.Value?.ToString
                            m_previousFont = String.Empty
                            m_wasPreviewPreviewValueSet = False

                        Case ValueCommandParameterAction.Preview
                            If Not m_wasPreviewPreviewValueSet Then
                                m_previousFont = MyFont.FontFamily
                                m_wasPreviewPreviewValueSet = True
                            End If
                            MyFont.FontFamily = inputArg.PreviewValue?.ToString

                    End Select
                End If
            End If

            inputArg.Handled = True
        End Sub
        Private Function FontFamilyCanExecute(ByVal inputArg As FontFamilyValueCommandParameter) As Boolean
            If inputArg IsNot Nothing Then
                If MyFont Is Nothing OrElse
                    String.IsNullOrWhiteSpace(MyFont.FontFamily) Then
                    inputArg.UpdatedValue = Nothing
                Else
                    inputArg.UpdatedValue = Ribbon.Controls.FontFamilyComboBox.GetFontFamily(MyFont.FontFamily)
                End If
                inputArg.Handled = True
            End If

            Return True
        End Function
        ''' <summary>
        ''' Command to change the Bold font style.
        ''' </summary>
        Public ReadOnly Property FontFamilyCommand As _
            New Prism.Commands.DelegateCommand(Of FontFamilyValueCommandParameter)(AddressOf ChangeFontFamily,
                                                                                   AddressOf FontFamilyCanExecute)

#End Region

 

For some reason, using the mouse selection to select a choice from the drop-down font selector will call the ValueCommandParameterAction.CancelPreview case (and not the Commit as i would expect).

 

However using the keyboard to select (focus on the value text, then using the up/down arrows following by a 'Enter') will call commit correctly.

 

What am i doing wrong here?


Viewing all articles
Browse latest Browse all 1458

Trending Articles