簡體   English   中英

WP7:列表框項目模板在編輯后不起作用?

[英]WP7: Listbox item template doesn't work when edited?

**更新**

很快,希望你們能為我提供幫助,但是我遇到了這個問題,我在混合狀態下打開wp7項目,然后編輯列表框項目模板,但完成了。 我保存了所有內容,然后返回Windows Phone的VS2010,然后單擊“調試”,但我看了一下手機,沒有任何顯示的東西。 列表框為空白。

碼:

<ListBox  toolkit:TiltEffect.IsTiltEnabled="True" x:Name="ListBox1" FontSize="42.667" FontFamily="Segoe WP SemiLight" IsSynchronizedWithCurrentItem="False" d:LayoutOverrides="VerticalAlignment">
    <ListBox.ItemTemplate>
       <DataTemplate>
          <StackPanel x:Name="sp">           
    <toolkit:ContextMenuService.ContextMenu>
   <toolkit:ContextMenu IsZoomEnabled="False" > 
  <toolkit:MenuItem Header="Delete" Click="Delete_Click" Name="MenuItem1" />
  <toolkit:MenuItem Header="Edit" Click="Edit_Click"/>
    <toolkit:MenuItem Header="View" Click="View_Click"/>
  <toolkit:MenuItem Header="Share.." Click="Share_Click"/>
</toolkit:ContextMenu>

快速摘要我正在制作的應用程序是一個簡單的便箋應用程序,可將便箋保存到獨立存儲中的文件夾中。 它成功地檢索了項目,但我只想使其具有標題和簡短說明。 這全都在一個項目中。 我已經到了這一點,兩個文本塊都帶有=“ {Binding}”,這基本上只是添加了我假設的標題,但我還向第二個文本塊添加了=“ {Binding}”,所以它基本上顯示了他們都。 有沒有辦法將其綁定到特定項目? 像第二個文本塊一樣,我該如何綁定它,使其在文本文件中顯示第1個12個字符,因此基本上它僅顯示標題和簡短描述?

也許您只有設計時數據? 如果您使用的是Mvvm Light DataService方法,則定義兩個DataService:一個用於設計時,另一個用於實時。

只是隨機假設。 很高興看到一些樣本。

UPD:您發布了錯誤的代碼,這是關於ContextMenu的。 我沒有在那里看到綁定。

但是再說一次,一般來說,應該沒有任何問題。 您只是將數據反序列化為模型,例如

public class Note
{
public string Name {get; set; }
public string Content; {get; set; }
}

然后您有了List(如果您想實時更改(如重命名),甚至還有ObservableCollection)。 然后你就綁定

<TextBlock Text="{Binding Name}"/>
<TextBlock Text="{Binding Content}"/>

如果要對內容/描述的12個字符進行嚴格限制,則可以添加Converter並僅輸入12個首字符,或引入新屬性

class Note 
{
***
public string Description { get { return Content.Substring(0, 12); } }
}

UPD2:好的,讓我們從頭開始。 首先,對於Wp7應用程序,推薦使用MVVM模式。 我相信,您可以自己搜索有關它的信息,但這是最重要的部分:

  • 模型。 保留您的數據(在您的情況下,它是注釋名稱和描述)。
  • ViewModel。 這是抽象視圖。 您這里擁有所有邏輯,已經准備好在此處呈現所有數據,但是VM不知道如何呈現數據。 在您的情況下,注釋列表將在此處。
  • 視圖。 這是您的用戶界面的說明。 就您而言,ListBox會在這里。

    1. 因此,首先創建一個新項目,然后使用NuGet安裝最新的Mvvm Light(例如)。 安裝后,您應該看到用於視圖模型和模型的文件夾。

    2. 像我之前描述的那樣創建新的類Note。 這將是您的模型。

    3. 現在,轉到viewmodel。 在構造函數中,在此處添加一個Notes列表,將其稱為ListOfNotes。 手動將幾個項目添加到列表中並對其進行初始化(為“名稱和內容”字段添加一些隨機值)。

    4. 現在,去查看。 在文件頂部,應該有類似DataContext =“ {Binding MainViewModel,Source = {StaticResource ViewModelLocator}}”的名稱。 在視圖內部,添加ListBox。 應該是這樣的

        <ListBox ItemsSource="{Binding ListOfNotes}" > <ListBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Vertical"> <TextBlock Text="{Binding Name}" /> <TextBlock Text="{Binding Content}" /> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox> 

所以,現在會發生什么。 當您運行應用程序時,您的視圖將被初始化。 它將得到MainViewModel(因為在步驟4中將其設置為DataContext)。 在MainViewModel的構造函數中,將初始化ListOfNotes(請參閱步驟3)。 然后,當頁面加載ListBox時,它將嘗試在DataContext(在我們的情況下為MainViewModel)中查找ListOfNotes。 它應該找到您的Notes列表,然后,ListBox的每個元素都將與ListOfNotes的每個元素相關聯。 如DataTemplate中所述,它將嘗試獲取Note.Name和Note.Content。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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