我有我並不能解決:( 一個問題,我有一個用戶控件(XAML文件和CS文件)WPF綁定到當前類屬性
在XAML它是這樣的:
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="Demo.CtrlContent"
x:Name="UserControl"
d:DesignWidth="598.333" d:DesignHeight="179.133" xmlns:Demo="clr-namespace:Demo" >
<UserControl.Resources>
<Storyboard x:Key="SBSmall">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="border" Storyboard.TargetProperty="(FrameworkElement.Width)">
<SplineDoubleKeyFrame KeyTime="00:00:01" Value="I WANT TO BIND VALUE HERE"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</UserControl.Resources>
<Border BorderBrush="#FFC2C0C1" CornerRadius="3,3,3,3" BorderThickness="1,1,1,1" RenderTransformOrigin="0.5,0.5" x:Name="border" Margin="1,3,1,3" HorizontalAlignment="Left" VerticalAlignment="Top" Width="300">
和。 CS文件:
public partial class CtrlContent {
private mindef W { get { return (mindef) Window.GetWindow(this); } }
public double MedWidth { // I WANT BIND THIS VALUE GO TO STORYBOARD VALUE IN XAML ABOVE
get {
double actualW;
if(W == null) actualW = SystemParameters.PrimaryScreenWidth;
else actualW = W.WrapMain.ActualWidth;
return actualW - border.Margin.Left - border.Margin.Right;
}
}
public double SmlWidth { get { return MedWidth/2; } }
public CtrlContent() { this.InitializeComponent(); }
public CtrlContent (Content content) {
this.InitializeComponent();
Document = content;
}
}
在我的.cs文件,有一個名爲MedWidth財產,並在XAML文件中有一個名爲情節串連圖板:SBSmall 我想我的故事板值綁定到我的正確ty在類ctrlcontent中。
*的想法是,在故事板是一個動畫來控制調整到一定的寬度取決於它的父容器上(寬度是動態的)
任何人?請:) 謝謝!
嗨dthorpe, 感謝您的回覆。 這是工作,但是當我播放故事板時,它沒有正確運行。 如果我在文本框中顯示綁定的MedWidth值,它顯示的是正確的值,但是當我播放故事板時,它將容器縮小到0(或者空 - 我不確定) 但是,如果我硬編碼故事板的值動畫好好工作。 – AnD 2010-04-06 09:04:58
您的MedWidth計算取決於其他佈局元素的寬度,例如窗口和邊框。在完全確定這些外部控件的值之前,可能正在通過數據綁定讀取您的MedWidth屬性值。嘗試將窗口的寬度設置爲固定值而不是「自動」,看看是否會改變行爲。 – dthorpe 2010-04-06 17:25:32