2012-03-14 2 views
0

나는 사용자 콘트롤을 만들었고, 나는 그것을 코딩하여 스택 패널에 추가했다. 컴파일러가되면 오류가 없습니다. 그러나, 나는이 사용자 정의 컨트롤에 대한 내용과 이미지를 보지 못했습니다. 버튼을 클릭하면 다른 페이지가 열립니다. 나는 click 이벤트가 잘 작동하고 있음을 안다. 누군가가 문제 해결 방법을 보여 주겠습니까? 미리 감사드립니다.사용자 콘트롤의 내용과 이미지를 볼 수 없다

namespace PhoneApp1 
{ 
    public partial class NobuttonListItem : UserControl 
    { 
    public NobuttonListItem() 
    { 
     InitializeComponent(); 
    } 

    public static DependencyProperty PicFileNameProperty = 
    DependencyProperty.Register("PicFileName", typeof(string), 
    typeof(NobuttonListItem), null); 

    public static DependencyProperty DescriptionProperty = 
     DependencyProperty.Register("Description", typeof(string), 
    typeof(NobuttonListItem), null); 

    public static DependencyProperty IDProperty = 
     DependencyProperty.Register("ID", typeof(string), 
    typeof(NobuttonListItem), null); 

    public string PicFileName 
    { 
     get 
     { 
      return (string)GetValue(PicFileNameProperty); 
     } 
     set 
     { 
      SetValue(PicFileNameProperty, value); 
     } 
    } 

    public string Description 
    { 
     get 
     { 
      return (string)GetValue(DescriptionProperty); 
     } 
     set 
     { 
      SetValue(DescriptionProperty, value); 
     } 
    } 

    public string ID 
    { 
     get 
     { 
      return (string)GetValue(IDProperty); 
     } 
     set 
     { 
      SetValue(IDProperty, value); 
     } 
    } 

    private void btnNoButtonListItem_Click(object sender, 
     RoutedEventArgs e) 
    { 
     App.Navigate(new 
     Uri(String.Format("/CallPage.xaml?ID={0}",ID), 
     UriKind.Relative)); 
    } 


    } 

}

test.xaml 페이지가있다 :

다음

<UserControl x:Name="NoButtonListItemControl" 
x:Class="PhoneApp1.NobuttonListItem" 
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" 
FontFamily="{StaticResource PhoneFontFamilyNormal}" 
FontSize="{StaticResource PhoneFontSizeNormal}" 
Foreground="{StaticResource PhoneForegroundBrush}" 
d:DesignHeight="480" d:DesignWidth="480"> 

<Grid x:Name="LayoutRoot" > 
    <StackPanel Margin="14,17,20,48" >    
      <Image Source="{Binding Path=PicFileName,  
       ElementName=NoButtonListItemControl}"  
       Width="120" Height="120"></Image>    
      <Button Content="{Binding Path=Description, 
      ElementName=NoButtonListItemControl }" 
         ClickMode="Press"  
      Click="btnNoButtonListItem_Click" FontFamily="Georgia" 
     FontSize="15" Foreground="SkyBlue" Height="90" 
     Width="400" /> 
     <TextBlock Text="{Binding Path=ID, 
     ElementName=NoButtonListItemControl }" 
      Style="{StaticResource pageTitleStyle}" 
         TextAlignment="{Binding}"  /> 

    </StackPanel> 
</Grid> 
내 UserControl.xaml.cs입니다 : 다음 내 UserControl.xaml입니다 여기에 사용자 정의 컨트롤을 추가했습니다.

<phone:PhoneApplicationPage xmlns:my="clr- 
    namespace:PhoneApp1" 
    x:Class="PhoneApp1.test" 
    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"> 


<Grid x:Name="LayoutRoot" Background="Transparent"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 


    <StackPanel x:Name="TitlePanel" Grid.Row="0" 
     Margin="12,17,0,28"> 
     <TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" 
      Style="{StaticResource PhoneTextNormalStyle}"/> 
     <TextBlock x:Name="PageTitle" Text="page name" Margin="9,- 
     7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> 
    </StackPanel> 

    <StackPanel x:Name="spListPanel" Loaded="spListPanel_Loaded" 
    Grid.Row="1" Margin="12,0,12,0"> 

    </StackPanel> 

    <Grid Grid.Row="2" Margin="12,0,12,0"> 
     <StackPanel> 

     </StackPanel> 
    </Grid> 

    </Grid> 



</phone:PhoneApplicationPage> 

test.xam 리터 페이지의 뒤에 코드 :

namespace PhoneApp1 
    { 
    public partial class test : PhoneApplicationPage 
    { 
     public test() 
     { 
     InitializeComponent();    
     this.Loaded += new RoutedEventHandler(Page_Loaded); 

     } 

     void Page_Loaded(object sender, RoutedEventArgs e) 
    { 


     ShowList(); 

    } 
    void ShowList() 
    { 
     int userControlUniqueID = 0; 

     AddItem("1", "Test 1", "onHold_icon.png", 1); 
     AddItem("2", "Test 2", "responded_icon.png",2); 

    } 


    void AddItem(string id, string description, string fileName, 
     int userControlUniqueID) 
    { 
     NobuttonListItem item = new NobuttonListItem(); 
     item.Name = "lst_" + Convert.ToString(userControlUniqueID); 
     item.ID = id; 
     item.Description = description; 
     item.PicFileName = "/images" + "/" +fileName; 
     spListPanel.Children.Add(item); 

    } 
    } 
} 
+0

응용 프로그램을 실행하고 바인딩 오류에 대한 출력 창을 확인 ... 잘 모르겠지만,이게 이미지 바인딩과 관련이있을거야 문자열에 대한 소스 속성 형식 값 ... –

답변

0

여전히 아무튼 경우 "숨김"파일

this.DataContext = this; 

에 다음 코드를 추가하는 것을 잊지 마세요 ' t 작업을 출력 창에 출력 일부를 게시하십시오

+0

내가 this.DataContext = this; "ShowList fuction"이라고 부르는 성전 후. 출력은 txtUser가 고립 된 저장소의 속성입니다. this.spListPanel.DataContext = this로 변경하면이 멤버에는 컨트롤 인 base, _contentLoaded, ApplicationTile, LayourRoot, PageTitle, spListPanel, TitlePanel이 포함됩니다. 나는 아직도 나의 queote에 무엇이 문제인지 모른다. – user819774

+0

표시 목록 기능 앞에 놓습니다. 그러면 this.spListPanel.ItemsSource = myObservableCollection ; – ry8806

관련 문제