将项目列表框中的选定项绑定到属性?

时间:2013-08-15 18:02:55

标签: c# wpf data-binding windows-phone

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

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

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

我想将SelectedItem属性绑定到Code-behind中的属性以跟上

<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();
        }

    }
}

注意:我创建了一个包含XAML

内属性的Class实例

2 个答案:

答案 0 :(得分:0)

按照你需要的MVVM模式(漂亮)

试试这个:

在您的窗口承包商中

befor InitializeComponent(); 添加:

this.DataContext = this;

所以绑定 SelectedItem 就像这样

SelectedItem="{Binding STileCurrency,Mode=TwoWay}

答案 1 :(得分:0)

如果这里有真人管家,你应该有什么工作:

Source={StaticResource livetilemanager}} 

上面有一个属性:

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

顺便看看绑定错误,请在调试时关注VS中的调试窗口。

顺便提一下,在C#中,通常用大写第一个字母命名属性,例如:

public string Code {get;set;}