我已經定義了一個依賴屬性格式如下:依賴屬性綁定未更新
public static readonly DependencyProperty AnimateColumnWidthProperty =
DependencyProperty.Register("AnimateColumnWidthProperty", typeof(double), typeof(MainWindow), new PropertyMetadata(0.0));
public double AnimateColumnWidth
{
get { return (double)GetValue(AnimateColumnWidthProperty); }
set { SetValue(AnimateColumnWidthProperty, value); }
}
當我的應用程序開始我做這個....
private void Window_Loaded(object sender, RoutedEventArgs e)
{
AnimateColumnWidth = Properties.Settings.Default.ProductInfoWidthExpanded;
}
...這應該初始化值到它的初始值 - 在這種情況下是400.
然後我在我的用戶界面中綁定了一列網格到這個屬性...
<ColumnDefinition
Name="ProductInfo"
Width="{Binding Path=AnimateColumnWidth,
Converter={StaticResource doubleToGridLength},
Mode=TwoWay}" />
據我所知,由於列寬被綁定到這個屬性,每當我更新屬性的列寬也應該更新。
我做錯了什麼,因爲當我更改屬性時寬度不會更新?我也試圖通過動畫來更新它,這也不起作用。此外,在AnimateColumnWidth屬性的getter上設置的斷點永遠不會被打 - 這意味着什麼都沒有試圖檢索屬性。
(這沒有工作,所以我清楚的地方有一些破!!)
腳註:
轉換在我的應用程序的根命名空間中定義的值(我相信,如果它不可能WPF會抱怨找到它)。
[ValueConversion(typeof(Double), typeof(GridLength))]
public class DoubleToGridLength : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return new GridLength((double)value);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return ((GridLength)value).Value;
}
}
+1用於鏈接到msdn調試綁定鏈接 –
綁定提示做了訣竅。網格的datacontext尚未設置。 – Remotec