まず、これについて Chris McCabe に同意します。デザイン パターンはガイドライン、フレームワーク、提案です。生きるか死ぬかのルールではありません。そうは言っても、「実際の」ビジネス ロジックを UI に導入することなく、2 つ (VM/Telerik) を結合できるはずです。
最初の可能性は、コントローラーでイベントを使用することです。UI はこのイベントをサブスクライブして、呼び出しを Telerik コントロールに転送できます。ただし、UI はいつ呼び出されるかを決定するべきではありません。
class MyModel {
public event EventHandler StopRefreshLoading;
}
class myForm : Form {
public myForm(MyModel data)
{
data.StopRefereshLoading += (o, e) => this.CustomControl.StopPullToRefreshLoading(true);
// ... etc
}
率直に言って、私はこの種の動作にはインターフェイスを使用することを好みます。これにより、コントローラーが実装を強制的に新しいコントラクト要件に更新することが容易になります。欠点は、複雑な UI ではインターフェイスが冗長になりすぎて、テストの作成が困難になる可能性があることです。
interface IMyModelView {
void StopRefreshLoading();
}
class myForm : Form, IMyModelView {
void IMyModelView.StopRefreshLoading()
{
this.CustomControl.StopPullToRefreshLoading(true);
}
どちらの方向に進んでも、UI デザイン パターンの違反が発生する可能性があります。ただし、現実の世界では、特定のパターンに厳密に従うことにポイントはありません。パターンは、コードの信頼性、テスト可能性、柔軟性などを向上させるための補助として存在します。パターンを使用する理由を決定すると、いつそのパターンに安全に違反できるかを評価できます。