'u özelliğini Column
özelliğine Grid
numaralı telefona bağlamayı deniyorum.WPF Grid Sütun Genişliğine Bağlama
<Grid x:Name="MyGridName">
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="TitleSection" Width="100" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>...</Grid.RowDefinitions>
<GridSplitter x:Name="MyGridSplitter" Grid.Row="0" Grid.Column="0" ... />
</Grid>
tanımlanan DependancyProperty
aşağıdaki Ben ayrı Usercontrol olarak:
MyUserControl Cntrl = new MyUserControl(/* Construction Params */);
BindingOperations.SetBinding(Cntrl , MyUserControl.AnotherProperty, new Binding { ElementName = "objZoomSlider", Path = new PropertyPath("Value"), Mode = BindingMode.OneWay });
BindingOperations.SetBinding(Cntrl , MyUserControl.TitleWidthProperty, new Binding { ElementName = "TitleSection", Path = new PropertyPath("ActualWidth"), Mode = BindingMode.OneWay });
/* Other operations on Cntrl */
ilk bağlayıcı tanımlanan eserleri:
public static readonly DependencyProperty TitleWidthProperty = DependencyProperty.Register("TitleWidth", typeof(int), typeof(MyUserControl));
public int TitleWidth
{
get { return (int)base.GetValue(TitleWidthProperty); }
set { base.SetValue(TitleWidthProperty, value); }
}
Ben dolayısıyla ben buna benzer bir bağlama deyimi var, kodda Usercontrol örneklerini oluşturma bu durumda bir Slider), ancak "TitleSection" ile Bağlama (Kılavuzda tanımlanan ColumnDefinition) başarısız olur. Kodda bir kesme noktası koymak ve "TitleSection" üzerinde bir saat yapmak, beklenen nesneyi döndürür.
x: Name'd ColumnDefinition'ın bağlanamayacağından şüphelenmeye başladım. Şebekemdeki ilk sütunun değişen genişliğine nasıl bağlanabileceğimi öneren var mı?
DÜZENLEME # 1 - yorum
veri bağlama anlamında 'başarısız' cevaplamak için bir TitleWidth
özellik için setter ayarlanmış kesme ve ilk sütunu yeniden boyutlandırmak için GridSplitter kontrolünü kullanarak, kesme noktası asla vurulmaz. Ek olarak, DependancyProperty TitleWidth
değişiklikleri gerçekleştirilmediğinde kodun işlenmesini beklerim.
Usercontrol oluşturuluyor ve Window_Loaded
işlevindeki Kılavuz içindeki bir Stackpanel'e ekleniyor. Grid'in, Usercontrols oluşturulduğu zamana kadar oluşturulduğunu beklerim. Tabii ki x: Name'd Elementi TitleSection
, bağlanabiliyorsa ve/veya bağlantı kurulmadan önce 100
değerine sahiptir.
EDIT # 2 - Muhtemelen bununla ilgili bir şey var mı?
ben Izgara ColumnDefinition dokümantasyon için MSDN sayfalarında yuvarlak bir kokla sahip oldum ve GridLength() rastlamak ama ben bir bağlayıcı ifadede kullanabilirsiniz etrafında başımı alamıyorum. İlişkili GridLengthConverter'i, IValueConverter'den kaynaklanmadığı için bağlayıcı kodda bir dönüştürücü olarak kullanamıyorum.
Bir şekilde Grid nesnesindeki hücrelerden birinin ActualWidth özelliğine bağlanma eğilimindeyim. Sütun tanımına bağlandığı kadar temiz görünmüyor, ama şu anda işe yaramayacağım.
Kullanıcı denetimini nasıl ve hangi noktada oluşturuyorsunuz? Kılavuz görüntülendi mi? – Donnelle
Bağlantı noktaları tarafından asla kullanılmayacağından, bağımlılık özelliklerinin kümesinde/noktalarında kesme noktaları ayarlamaya güvenemezsiniz. Dahili bağımlılık özelliği, SetValue (DependencyProperty, value) –