2017-01-30 4 views
0

Я пытаюсь переустановить меню гамбургеров с помощью некоторых значков шрифта. Мой способ сделать это - ResourseDictionoary в моем приложении. Теперь я хочу связать ключ FontAwesomeUserString для глифа ниже. Моя собственность в объекте - это значок с типом string. В моем списке Icon var x:DataType="local:MenuItem" имеет значения из моего ресурса.Binding StaticResourse Key in uwp

<FontIcon Grid.Column="0" FontFamily="{StaticResource FontAwesomeFontFamily}" Glyph="{StaticResource FontAwesomeUserString}" Foreground="White" /> 
<TextBlock Grid.Column="1" Text="{x:Bind Name, Mode=OneWay}" TextWrapping="Wrap" FontSize="16" VerticalAlignment="Center" Foreground="White"/> 

Скажите, пожалуйста, если/как я могу связать свойство ResourceKey с StaticResourse. Спасибо

+0

Вам также нужно указать свой код ресурса. Вы делаете это правильно здесь. Просто помните, что {StaticResource} отличается от {Binding}, но для того, что вы делаете, это выглядит правильно. –

+0

Hi @MichaelPuckettII. Спасибо за ответ. Вы можете найти исходный код [здесь] (https://github.com/amoraitis/AuebUnofficial/blob/Dev/AuebUnofficial/Helpers/HandlingUI/FontAwesomeDictionary.xaml), я хочу, чтобы статический ресурс принимал все значения из кода [позади] (https://github.com/amoraitis/AuebUnofficial/blob/Dev/AuebUnofficial/Navig.xaml.cs), и вот мой код в [xaml] (https://github.com/amoraitis/AuebUnofficial/ blob/Dev/AuebUnofficial/Navig.xaml) –

+0

Спасибо Anastasios. Однако; Винсент ниже ответил на вопрос так же, как я бы дал или взял, поэтому взгляните на то, что он там говорит. –

ответ

1

Вы можете изменить значение словаря ресурсов, заменив их с помощью кода, как:

Application.Current.Resources["FontAwesomeUserString"] = "&glyphCode"; 

Не забывайте, что StaticResource считываются только при создании страницы.

В зависимости от того, когда вы обновляете словарь, этого может быть достаточно, но если вы хотите, чтобы ваше приложение правильно обновлялось, когда вы что-то меняете в словаре ресурсов, вам нужно будет использовать ThemeResource.

Вы можете получить более подробную информацию о ThemeResourcehere.

<FontIcon Grid.Column="0" 
    FontFamily="{ThemeResource FontAwesomeFontFamily}" 
    Glyph="{ThemeResource FontAwesomeUserString}" 
    Foreground="White" /> 

Update

Если вы просто пытаетесь установить семейство глиф/шрифта для всех элементов, регулярное связывание достаточно:

<DataTemplate x:Key="DefaultTemplate" x:DataType="local:MenuItem"> 
     <Grid Width="240" Height="48"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="48" /> 
       <ColumnDefinition Width="*"/> 
      </Grid.ColumnDefinitions> 

      <FontIcon Grid.Column="0" FontFamily="{x:Bind FontFamily}" Glyph="{x:Bind Icon}" Foreground="White" /> 
      <TextBlock Grid.Column="1" Text="{x:Bind Name, Mode=OneWay}" TextWrapping="Wrap" FontSize="16" VerticalAlignment="Center" Foreground="White"/> 
     </Grid> 
    </DataTemplate>   

Вы просто должны определить FontFamily и Icon на ваш взгляд мода. el Вы можете взглянуть на меню гамбургера из инструментария UWP documentation

+0

спасибо за ответ, я не вижу, как я могу реализовать это в объекте [вроде этого] (http://prnt.sc/e2d5u1) для привязки. Я хочу, чтобы он принимал разные значения. Не только значение «FontAwesomeUserString». –