元スレMicrosoft Silverlight その8
silverlight覧 / PC版 /みんなの評価 : ○
501 = :
>>498
実装面から見るとSLはblendのタイムラインとちょっとした生成処理で行けそうな気がするのにハードコーディングかい…
HTMLはjQueryつかわないと書く気にならないし、デバッグ大変そう…
そしてちょっとの変更が泣けそう…
ってところかな?
504 = :
Visibility プロパティが変更されたらイベントが実行されるようにしたいのですが、
コントロールを単純に実装しても無理っぽい感じでした。
何か良い方法はないでしょうか?
public class MyTextBox : TextBox
{
public new Visibility Visibility {
get
{
return base.Visibility;
}
set
{
if (base.Visibility != value)
{
base.Visibility = value
MyVisibility_Changed();
}
}
}
}
506 = :
基底コントロールの継承はした事がなく、新規コントロールの場合だから的外れならごめんだけど…
Viewが使えるようにコントロール登録する際にRegisterAttachedメソッド系って呼ばなくていいの?
というのも、overrideではなくnewでプロパティ隠蔽してるからMyTextBox.Visibilityは処理されてないんじゃないかと…
ソースで書いた場合のおさらい
var txt = new MyTextBox();
txt.Visibility = false; // ①これはMyTextBoxクラスが呼ばれる
TextBox txtBase = txt;
txtBase.Visibility = true; // ②これはTextBoxクラスが呼ばれる
newで隠蔽してるから基底クラを操作した場合、当然基底クラスのが直接呼ばれて継承したのは呼ばれない。
んで、View側にMyTextBoxが認識されなければ②のようにTextBoxで処理されてる気がする…
507 = :
ちょっと修正。
Viewで認識する対象はクラス自体というより、プロパティとイベントの関係が認識されてるかってこと。
一度MyTextBoxでnewしてるのを別名に変更してイベントと紐付いてるかを確認した方がいいと思う。
508 = :
んんん…クラスが認識されるだけで呼ばれるハズなのか?
クラス定義だけでXAML側でそのクラスは使えるハズだから上で書いた事は的外れ…?
でもRegisterAttachedメソッドで登録するからクラス認識だけじゃ足りないのか…?
ごめん、ちょっとこんがらがってきたから的外れなら無視して…
連投すまん。。
509 = :
>>504
MVVM Light Tool Kit を使って、EventToCommand で実行するってのはどう?
510 = :
もしかして、依存関係プロパティにバインドしているのに、Setterが呼ばれないとか当たり前のことで騒いでる?
513 = :
>>510
その当たり前のことが解らないので、教えてもらえませんか?
お願いします。
514 = :
>>513
依存関係プロパティだと、直接SetValueの方が呼ばれるよ。
516 = :
依存関係プロパティはWPFやSilverlightが勝手にプロパティと呼んでるだけで全く独自の仕組み
C#でいうところのプロパティとは無関係
コードから値を取得したり設定したりするのを楽にするためにC#のプロパティの方を
「ラッパーとして」用意してあるけど、呼ばれる保証はない
WPFならOverrideMetadataとかOnPropertyChangedとか使って基底クラスの
依存関係プロパティが変化したことを知ることができるんだけどSilverlightでは無理
517 = :
>>513
ダミーのプロパティを作って Visibility からダミーのプロパティに Mode=TwoWay で Binding すれば良いよ。
ダミーのプロパティの set に必要な処理を書く。
Visibility の Binding を他に使う予定なら、ダミーの依存関係プロパティを作って、それの PropertyChangedCallback にメソッドを登録。
あとは、ダミーの依存関係プロパティから Visibility に Mode=OneWay で Binding する。
この辺りを参考に実装してみて。
How do I know when FrameworkElement.DataContext is changed?
http://forums.silverlight.net/forums/p/13421/43840.aspx
518 = :
DataGrid の DataGridTemplateColumn の中にTextBlock と、編集用に TextBox を60個ずつ
それぞれStackPanel の中に突っ込んでいるんだけど、レイアウトがおかしいです。
レイアウトがおかしい行をスクロールアウトして、再度スクロールインすると、ちゃんとレイアウトされているのです。
以前、再描画とは異なる処理が走ると教わったのですが、具体的にどのメソッド等を呼べばスクロールアウト、スクロールインと
同等のことができるのでしょうか?
レイアウトがおかしくなるのは、Silverlight のバグでしょうか?
519 = :
>>518
解決しました。
Setter で StackPanel にマージン(Margin="5")を設定していたのが原因でした。
Setter を消したらちゃんと描画されました。
原因はわかりません。
解る人がいたら、原因の解説をお願いします。
520 = :
夏だ
http://www.microsoft.com/taiwan/silverlight/
521 = :
えらい横長いね
522 = :
DataGrid でName 属性を設定しても MainPage.xaml.cs から参照できないのですが、仕様でしょうか?
<sdk:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<StackPanel Name="TypePanel" Background="White" Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Left">
<sdk:AutoCompleteBox Name="Type0" Text="{Binding Type0, Mode=TwoWay}"/>
<sdk:AutoCompleteBox Name="Type1" Text="{Binding Type1, Mode=TwoWay}"/>
<sdk:AutoCompleteBox Name="Type2" Text="{Binding Type2, Mode=TwoWay}"/>
<sdk:AutoCompleteBox Name="Type3" Text="{Binding Type3, Mode=TwoWay}"/>
<sdk:AutoCompleteBox Name="Type4" Text="{Binding Type4, Mode=TwoWay}"/>
<sdk:AutoCompleteBox Name="Type5" Text="{Binding Type5, Mode=TwoWay}"/>
</StackPanel>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellEditingTemplate>
※Type1 ~ Type5 が参照できません
523 = :
Name -> x:Name
とか?
525 = :
>>522
出先だから確認できないけど、DataTemplate使ってるってことはDataGridとは別のリソース定義扱いになるから直接ソースから扱えたっけ?
アクセスしたいならVM側からとかいくらでも…
というかMVVMの構造知っといた方がいいような…
527 = :
>>525
状態を保持する必要が無ければ、View側で処理しちゃっても良いと思うんだぜ
528 = :
sdk:AutoCompleteBox の Got_Focus イベントで、
OriginalSource を参照すると、型が AutoCompleteBox ではなく、TextBox になってしまうのですが、
そういうものでしょうか?
private void TextBox_GotFocus(object sender, RoutedEventArgs e)
{
MessageBox.Show(e.OriginalSource.GetType().ToString());
}
529 = :
html5を学習しているけど、本当にsilverlightっていらねえって実感する。
530 = :
HTML5で一体何をやってんだ
全部JavaScriptで実装か?
531 = :
SilverlightでかいたらHTML5で動くってなってくれるのが最強な気がする。
533 = :
なぜ紫外線?
534 = :
金光教信者とか云われるのはマズいから
銀灯にしたってホント?
535 = :
もし宗教に配慮したとしても金光明経でしょ。関係ないと思うが
一応、命名由来はあくまでもAdobe Flashへの対抗らしい。
カメラのフラッシュを吸収して結像するのは銀塩カメラ(Silver Halide Camera)だし
「フラッシュ」は1瞬だけ激しく輝くが、「銀」は「光」を当てるといつまでも輝き続けるから、という説もある。
536 = :
質問です。
セル結合が可能なデータグリッドを作るのに
どのコントロールで実装するのがスマートなんでしょう。
StackPanel にTextBox を並べるか
Gridで配置するか。。
他に案があればご教示ください。
FlexGridなどの有償製品は抜きでお願いします。
537 = :
正直、そういうの作るんだったらフルスクラッチにしたほうがいいと思う。
538 = :
どうしても標準コントロールでやりたきゃ、Gridじゃね?
快適に動作するかはかなりアレなので、俺もフルスクラッチを薦めるけど
539 = :
レスありがとう。
ゴリゴリ書くには時間がいるなあ
540 = :
んーどの程度のものを作るかによるけれどある程度以上になると
ベースのくせを回避したり制限を乗り越える労力>>>>>>フルスクラッチの労力
になると思われ。しかも不毛な労力。
541 = :
グリッド関係は、どうしてもExcelと比較されるからなぁ
542 = :
割と疑問なんだが、データグリッドでセルを結合したいってのはどんな用途を想定しての物なんだろう
543 = :
群馬レコードと埼玉レコードを結合してぐんたまにしたりとかあるだろ
544 = :
帳票文化の伝統を守るためじゃまいか
545 = :
スケジュール表でドラッグ&ドロップで線引きたいとかってときにあったな>結合
546 = :
みんな大好きExcel方眼紙
549 = :
Silverlightで単体テストする時って、皆はどうしてる?
やっぱ、Silverlight Unit Test Frameworkが基本なんだろうか
550 = :
>>549
俺も気になっていた。
ブラウザ外実行だとデバッガ使えないみたいで、デバッグに苦労しました。
類似してるかもしれないスレッド
- Microsoft Silverlight その9 (574) - [96%] - 2023/1/25 14:30
- Microsoft Silverlight その7 (1001) - [96%] - 2011/3/24 1:31 ○
- Microsoft Silverlight その6 (1001) - [96%] - 2010/11/1 4:09
- Microsoft Silverlight その5 (984) - [96%] - 2010/4/16 20:20 ☆
- Microsoft Silverlight その4 (1001) - [96%] - 2009/12/5 9:05 ○
- Microsoft Silverlight 2.0 その3 (556) - [83%] - 2009/3/24 0:35 ○
- Microsoft Silverlight 2.0 その2 (1001) - [78%] - 2008/11/21 11:47 ○
- Microsoft Silverlight 2.0 (1001) - [74%] - 2008/5/12 6:08 ○
- Silverlight登場で.NET使い大勝利!!! Part2 (525) - [18446744073709551603%] - 2016/10/16 0:30 ○
トップメニューへ / →のくす牧場書庫について