Не уверен, насколько это важно, но я использую сетку devexpress и определяю шаблон ячейки для одного из столбцов.Проблема в том, что когда я связываюсь с «slidercontrol», это работает, но когда я связываюсь с UserControl моего собственного создания, связывание не работает.UserControl связывается правильно ... Я использую его в другом месте кода.Это просто не работает в этом контексте, и мне интересно, почему?Спасибо.
Эта привязка работает:
<dxg:GridColumn FieldName="SetupRating" Header="Setup Rating" AllowFocus="True" AllowEditing="True">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<Slider Value="{Binding RowData.Row.SetupRating}" Minimum="0" Maximum="3" />
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
Эта привязка не работает:
<dxg:GridColumn FieldName="SetupRating" Header="Setup Rating" AllowFocus="True" AllowEditing="True">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<wpf:RatingControl RatingValue="{Binding RowData.Row.SetupRating}" MaxRating="3" />
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
Редактировать: ПОЖАЛУЙСТА, НЕ ПРЕДЛАГАЙТЕ, ЧТО wpf: RatingControl IS BROKEN.Это проверенный пользовательский контроль, который работает во многих других сценариях связывания данных.Если с ним что-то не так, у него должно быть что-то неясное, что только влияет на путь, который я связываю с этим шаблоном данных.СПАСИБО.
Вот как я определяю свойство зависимостей в моем элементе управления рейтингом:
public static readonly DependencyProperty RatingValueProperty =
DependencyProperty.Register("RatingValue", typeof(int), typeof(RatingControl),
new FrameworkPropertyMetadata(0,
FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
RatingValueChanged));
public int RatingValue
{
get
{
return AdjustRatingValue((int)GetValue(RatingValueProperty), MaxRating);
}
set
{
SetValue(RatingValueProperty, AdjustRatingValue(value, MaxRating));
}
}
private static int AdjustRatingValue(int value, int maxValue)
{
if (value < 0)
return 0;
else if (value > maxValue)
return maxValue;
else
return value;
}
private static void RatingValueChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
RatingControl parent = sender as RatingControl;
int numberOfButtonsToHighlight = AdjustRatingValue((int)e.NewValue, parent.MaxRating);
SelectStars(numberOfButtonsToHighlight, parent.StarValues);
}