2015-04-27 49 views
0

我正在與C#再次合作,並試圖趕上一些新的方面,因爲我最後一次使用它LINQ尚不存在。我正在嘗試在Windows應用商店應用中創建日曆(不是日期選擇器),並動態創建大部分控件。當點擊/點擊日期時,我希望它在RichTextBlock中顯示信息。這部分不是問題...我有一個網格控件,並且可以遍歷月份來創建日曆,方法是在列表中創建RichTextBlocks,自然就是calBlocks。這是給我適合的部分:如何將事件處理程序綁定到集合中的動態創建的控件?

for (int i = 0; i < DateTime.DaysInMonth(CurrentDate.Year, CurrentDate.Month); i++) 
    { 
     calBlocks.Add(new RichTextBlock()); 
     calBlocks[i].Tapped += new TappedEventHandler(calBlock_Clicked); 
    } 

我已經定義了一個calBlock_Clicked處理程序,但它似乎永遠不會到達。我似乎錯過了一些東西,我認爲這是非常基本的東西,但我似乎無法看到它。

如果你有興趣,這是calBlock_Clicked處理程序。這是很基本的,只是在此刻調試的目的:

void calBlock_Clicked(object sender, TappedRoutedEventArgs e) 
    { 

     Paragraph MainHeader = new Paragraph(); 
     Run HeaderDate = new Run(); 

     HeaderDate.Text = "This would be a long format date"; 

     MainHeader.Inlines.Add(HeaderDate); 

     TestBlock.Blocks.Add(MainHeader); 
    } 

我已經看過,但我還沒有看到任何回答正是這一點......也出現了幾個類似的帖子,但沒有相當多回答了我的問題。如果已經存在,請將我指給他們!

+0

您的代碼乍看上去還好。 'DateBlock'或'monthCal'與有問題的代碼有關嗎?另外,你在測試'calBlock_Clicked'是否使用斷點命中? –

+0

好點,對不起。我實際上是要擺脫monthCal位,但顯然我沒有發佈之前。這只是我用來生成'Run'的一個基本結構。我將編輯原始帖子以刪除對該文章的引用。另外,我嘗試設置一個斷點,它永遠不會出現。 – BPetty

+0

嘗試在構建它們時將'IsTextSelectionEnabled'屬性設置爲'false'。這應該重新啓用該事件。 –

回答

1

在施工時將RichTextBlockIsTextSelectionEnabled屬性設置爲false

這將重新啓用Tapped事件。

例子:

calBlocks.Add(new RichTextBlock() { IsTextSelectionEnabled = false }); 
相關問題