Привязка XML-файла WPF Combobox

#c# #wpf #binding

#c# #wpf #привязка

Вопрос:

Я не смог найти что-то, что работает для конкретного случая привязки XML, которую я пытаюсь выполнить.

У меня есть следующий фрагмент xml:

Я хочу привязать атрибут type к combobox в usercontrol, но список выбираемых значений определяется списком в usercontrol.

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

 <UserControl.Resources>
    <x:Array x:Key="HealingComponentTypes" Type="sys:String">
        <sys:String>Absolute</sys:String>
        <sys:String>AbsolutePercent</sys:String>
        <sys:String>RelativePercent</sys:String>
    </x:Array>
</UserControl.Resources>
  

Затем я привязываю их к выпадающему списку

 <GroupBox DataContext="{Binding XPath=FieldHealingComponent}"  Header="Field Use" Height="328" HorizontalAlignment="Left" Margin="231,2,0,0" Name="groupBox3" VerticalAlignment="Top" Width="220">
            <Grid>
                <GroupBox Header="HP Healing Component" Height="101" HorizontalAlignment="Left" Margin="6,0,0,0" Name="HPFieldUseGroup" VerticalAlignment="Top" Width="192">
                    <Grid>
                        <ComboBox ItemsSource="{StaticResource HealingComponentTypes}" SelectedItem="{Binding XPath=HP/@type}" Height="23" HorizontalAlignment="Left" Margin="62,49,0,0" Name="MPBattleUseType" VerticalAlignment="Top" Width="112" />
                    </Grid>
                </GroupBox>
           </Grid>
        </GroupBox>
  

Проблема в том, что это не привязывает значения. Я вижу три возможности в выпадающем списке, но независимо от того, что я выбираю, это не отражается обратно в xml. Аналогично, начальное значение не отображается в combobox, даже если оно установлено. Я знаю, что базовый datacontext правильный, потому что у меня есть метка в groupbox

 <TextBox Text="{Binding XPath=HP/@amount}"  Height="23" HorizontalAlignment="Right" Margin="0,16,6,0" Name="HPFieldHealingAmount" VerticalAlignment="Top" Width="112" />
  

и он правильно отображает сумму. Я уверен, что это просто я не знаю, как правильно установить привязку. Я перепробовал множество предложений, которые появлялись, когда я искал это в Google, но ни одно из них не сработало. Будем признательны за любую помощь. Спасибо

Ответ №1:

Вы пробовали Mode= TwoWay в привязке?

Ответ №2:

Вы пробовали использовать конвертер? Я полагаю, что тип связанного атрибута не имеет типа string, и вам потребуется IValueConverter для правильного чтения и обновления вашего XML.