[英]How to change Content property in ContentControl
我有自定義ContentControl
public class MyContentControl: ContentControl
{....}
像這樣在XAML中定義的內容
<controls:MyContentControl x:Name="myContentControl">
<controls:MyContentControl.Content>
<controls:UserControl1 />
</controls:MyContentControl.Content>
</controls:MyContentControl>
啟動應用程序時,內容會顯示在設計器和設備中。 但是當我嘗試以編程方式更改Content屬性時,例如
UserControl2 control2 = new UserControl2();
myContentControl.Content = control2;
MyContentControl什么也不顯示。 使用標准ContentControl可以得到相同的結果。 歡迎任何建議。
這應該工作。 原因可能是控件沒有拉伸,並且僅顯示為0x0。 嘗試將絕對Width
和Height
設置為control2
然后檢查其是否顯示。 您還可以設置myContentControl.HorizontalContentStretch
和myContentControl.VerticalContentStretch
。
你可以嘗試運行在調試器的應用程序,然后使用Live物業資源管理器里面看到控件的實際大小是什么Content
的。
我按照您的代碼制作了簡單的代碼示例進行測試。 這里沒有問題。
public class CustomContentControl:ContentControl
{//......}
<Grid>
<local:CustomContentControl x:Name="content">
</local:CustomContentControl>
</Grid>
MyUserControl1 myUserControl1 = new MyUserControl1();
content.Content = myUserControl1;
<UserControl
x:Class="AppContent.MyUserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:AppContent"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400">
<Grid>
<TextBox Text="abc"></TextBox>
</Grid>
您可能已經在代碼中做了一些特定的設置。 @Martin Zikmund的建議也是合理的。 您可以參考他的建議並檢查您的代碼。 之后,如果您仍然無法解決此問題,請提供一個最小,完整且可驗證的示例 。
好的,我找出問題出在哪里。 我為台式機和移動設備使用了不同的控件,因此我將它們的某些XAML視圖放入DeviceFamily-Mobile文件夾中。 這樣,他們會在需要時自動使用。 我對命名空間感到困惑,因為出於可訪問性原因,此文件夾中的所有XAML視圖都具有根命名空間。 當我嘗試通過c#將控件添加到ContentControl時,我沒有解析放置控件的名稱空間。 因此,我將XAML視圖作為子級添加到ContentControl中,並且它們保持不可見,因為它們都不具有InitializeComponent()方法。 通過初始化添加正確的控件解決了我的問題。
我非常感謝您的回答,他們為我指出了正確的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.