0

私はページを持っています:

<phone:PhoneApplicationPage 
x:Class="VKClient.ConversationListPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
shell:SystemTray.IsVisible="True">

<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <!--TitlePanel contains the name of the application and page title-->
    <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">            
    </StackPanel>

    <!--ContentPanel - place additional content here-->
    <Grid x:Name="ContentPanel"  Grid.Row="1" Margin="12,0,12,0"></Grid>
</Grid>

<!--Sample code showing usage of ApplicationBar-->
<!--<phone:PhoneApplicationPage.ApplicationBar>
    <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
        <shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="Button 1"/>
        <shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="Button 2"/>
        <shell:ApplicationBar.MenuItems>
            <shell:ApplicationBarMenuItem Text="MenuItem 1"/>
            <shell:ApplicationBarMenuItem Text="MenuItem 2"/>
        </shell:ApplicationBar.MenuItems>
    </shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>-->

そしてその上の要素:

<Grid x:Name="ContentPanel"  Grid.Row="1" Margin="12,0,12,0"></Grid>

ContentPanel の内容をクラス外から変更したい。問題は、これが非静的フィールドであり、ConversationListPage クラスのインスタンスがないとアクセスできないことです。このインスタンス(確かにどこかに保存されている)にアクセスする方法も、フィールドを静的にする方法も見つかりませんでした。それを行う方法はありますか?

4

1 に答える 1

0

解決策を見つけました。ConversationListPageのコンストラクターで、そのインスタンスを別のclass()に渡します。

public ConversationListPage()
{
    //Change "OuterClass" to an actual class name where you'll be passing the instance
    InitializeComponent();
    OuterClass.setConversationListPage(this);
}

そして、OuterClassには次のものがあります。

public class OuterClass
{
    private static ConversationListPage conversationListPage;

    public static void setConversationListPage(ConversationListPage page)
    {
        conversationListPage = page;
    }
}

そのため、conversationListPageフィールドを介してConversationListPageのすべてにアクセスできます。

于 2012-08-23T20:11:53.943 に答える