0

我有一个绑定到货币项目列表的列表框。货币是一类

public class Currency
{
    public string code { get; set; }
    public string countryName { get; set; }
    public string imgUrl { get; set; }
    public string infoLink { get; set;}  }
}

列表框绑定到货币对象列表,并且此列表框中的每个项目都是图像和文本块的堆栈面板

我想将 SelectedItem 属性绑定到代码隐藏中的属性以跟上

<ListBox Name="sCurrencyLB" Margin="10,0,0,0" Width="Auto" Height="180" 
    IsEnabled="{Binding IsChecked, ElementName=LiveTilesToggleBtn}" 
    SelectedItem="{Binding STileCurrency, Mode=TwoWay, 
            Source={StaticResource livetilemanager}}"  
    ItemsSource="{Binding SCurrencyList}" >
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal" Margin="0,10,0,0">
                <TextBlock Name="scountryNametb" Width="50" Text="{Binding code}" 
                    VerticalAlignment="Center" HorizontalAlignment="Right"/>
                <Image Source="{Binding imgUrl}" Height="50" Width="50" 
                    HorizontalAlignment="Left" />
             </StackPanel>
         </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

应该在列表框中的选定项中的属性的代码

private Currency sTileCurrency;

public Currency STileCurrency
{
    get
    {
        return appSettings.GetValueorDefault<Currency>("STileCurrency", null);
    }
    set
    {
        if (appSettings.AddOrUpdateValue("STileCurrency", value))
        {
            settings.Save();
        }

    }
}

注意:我创建了一个 Class 实例,其中包含 XAML 中的属性

4

2 回答 2

0

遵循 MVVM Pattern(pretty) 这就是你所需要的

尝试这个:

在初始化组件()之前;在您的窗口承包商中添加以下内容:

this.DataContext = this;

所以像这样绑定SelectedItem

SelectedItem="{Binding STileCurrency,Mode=TwoWay}
于 2013-08-15T18:30:18.767 回答
0

如果 livetilemanager 在这里,你应该有什么工作:

Source={StaticResource livetilemanager}} 

有一个属性:

SCurrencyList

可以?如果 SCurrencyList 是您的代码隐藏中的一个属性 - 因为代码隐藏是默认的 DataContext - 您不需要为您的 SelectedItem 绑定指定 Source。

顺便看看绑定错误,在调试时留意 VS 中的调试窗口。

顺便说一句,在 C# 中,通常用首字母大写来命名属性,例如:

public string Code {get;set;}
于 2013-11-05T03:22:31.910 回答