将值绑定到列表框项模板(WP8)中的自定义单选按钮
本文关键字:WP8 单选按钮 自定义 绑定 列表 | 更新日期: 2023-09-27 18:17:09
我已经创建了自己的单选按钮,包括如下的索引属性:
public class IndexedRadioButton : RadioButton
{
public int Index { get; set; }
}
我在列表框中使用这个自定义单选按钮:
<ListBox Name="myListBox" Grid.Row="1" VerticalAlignment="Top">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem" >
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<my:IndexedRadioButton Content="{Binding price}" GroupName="myGroup" IsChecked="{Binding isChecked}" Index="{Binding priceIndex}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
现在,我想用值填充这个列表框。
背后的代码:
public MainClass()
{
public MainClass()
{
InitializeComponent();
string[] priceList = new string["1","2","3"];
List<MyClass> myClassList = new List<MyClass>();
for (int i = 0; i < priceList.Count; i++)
{
MyClass listClass = new MyClass()
{
price = response.priceList[i],
priceIndex = i,
isChecked = i==0?true:false
};
myClassList.Add(listClass);
}
myListBox.ItemsSource = myClassList;
}
private class MyClass
{
public string price {get; set;}
public int priceIndex {get; set;}
public bool isChecked { get; set; }
}
}
当我运行应用程序,我得到这个错误->>{系统。ArgumentException:值不在预期范围内。}(没有堆栈跟踪信息)
你认为是什么导致了错误?当我在XAML Index="0"
中静态地设置一些值到索引时没有问题,但在绑定Index="{Binding priceIndex}"
时存在问题。
谢谢,
为了允许绑定,你必须声明一个依赖属性。试试这个:
public class IndexedRadioButton : RadioButton
{
public static readonly DependencyProperty IndexProperty = DependencyProperty.Register(
"Index",
typeof(int),
typeof(IndexedRadioButton),
null);
public int Index
{
get { return (int)GetValue(IndexProperty); }
set { SetValue(IndexProperty, value); }
}
}
你可以在这里找到更多信息:
Windows Phone的依赖属性