簡體   English   中英

如何在ContentControl中更改Content屬性

[英]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。 嘗試將絕對WidthHeight設置為control2然后檢查其是否顯示。 您還可以設置myContentControl.HorizontalContentStretchmyContentControl.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM