[proofplan]
We count the same finite sets in two ways. First, inside a single parallel class, the blocks are pairwise disjoint $k$-subsets whose union is all of $X$, so each class contains $v/k$ blocks and hence $k$ divides $v$. Next, because the parallel classes partition $\mathcal{B}$, the number of classes is $b/(v/k)$. Finally, fixing a point $x \in X$, each parallel class contains exactly one block through $x$, so the number of parallel classes equals the replication number $r$; a separate point-block incidence count gives $r(k-1)=\lambda(v-1)$.
[/proofplan]
[step:Count the blocks in one parallel class]
Let $\mathcal{C} \in \mathcal{R}$ be a parallel class, and let $m_{\mathcal{C}} := |\mathcal{C}|$ denote the number of blocks in $\mathcal{C}$. Since the blocks in $\mathcal{C}$ are pairwise disjoint and have union $X$, the finite cardinality of the disjoint union gives
\begin{align*}
v
= |X|
= \sum_{B \in \mathcal{C}} |B|
= \sum_{B \in \mathcal{C}} k
= k m_{\mathcal{C}}.
\end{align*}
Thus $k \mid v$, and every parallel class satisfies
\begin{align*}
|\mathcal{C}| = m_{\mathcal{C}} = \frac{v}{k}.
\end{align*}
[/step]
[step:Count the parallel classes by partitioning the block set]
Let $q := |\mathcal{R}|$ denote the number of parallel classes. Since $\mathcal{R}$ is a partition of $\mathcal{B}$ and each class contains $v/k$ blocks, we have
\begin{align*}
b
= |\mathcal{B}|
= \sum_{\mathcal{C} \in \mathcal{R}} |\mathcal{C}|
= \sum_{\mathcal{C} \in \mathcal{R}} \frac{v}{k}
= q \frac{v}{k}.
\end{align*}
Therefore
\begin{align*}
q = \frac{b}{v/k},
\end{align*}
so $\frac{v}{k} \mid b$.
[/step]
[step:Identify the number of parallel classes with the replication number]
Fix a point $x \in X$. For each parallel class $\mathcal{C} \in \mathcal{R}$, the blocks in $\mathcal{C}$ are pairwise disjoint and have union $X$, so there exists exactly one block $B_{\mathcal{C}} \in \mathcal{C}$ such that $x \in B_{\mathcal{C}}$.
Define the incidence set
\begin{align*}
I_x := \{(\mathcal{C},B) \in \mathcal{R} \times \mathcal{B} : B \in \mathcal{C} \text{ and } x \in B\}.
\end{align*}
Counting $I_x$ by parallel classes gives $|I_x|=q$. Counting $I_x$ by blocks gives $|I_x|=r$, because every block belongs to exactly one parallel class and exactly $r$ blocks contain $x$. Hence
\begin{align*}
q = r.
\end{align*}
[guided]
Fix a point $x \in X$. The role of resolvability is strongest here: every parallel class is not merely a collection of disjoint blocks, but a partition of the entire point set $X$. Therefore, for a given parallel class $\mathcal{C} \in \mathcal{R}$, the point $x$ lies in at least one block of $\mathcal{C}$ because the union of the blocks in $\mathcal{C}$ is $X$. It lies in at most one block of $\mathcal{C}$ because distinct blocks in $\mathcal{C}$ are disjoint. Hence it lies in exactly one block of $\mathcal{C}$.
We encode this uniqueness by defining
\begin{align*}
I_x := \{(\mathcal{C},B) \in \mathcal{R} \times \mathcal{B} : B \in \mathcal{C} \text{ and } x \in B\}.
\end{align*}
This set records the choice, for each parallel class, of the unique block in that class containing $x$. Counting by the first coordinate, each $\mathcal{C} \in \mathcal{R}$ contributes exactly one pair $(\mathcal{C},B)$, so
\begin{align*}
|I_x| = |\mathcal{R}| = q.
\end{align*}
Counting by the second coordinate, each block containing $x$ belongs to exactly one parallel class because $\mathcal{R}$ is a partition of $\mathcal{B}$. Since the replication number is $r$, there are exactly $r$ such blocks. Thus
\begin{align*}
|I_x| = r.
\end{align*}
The two counts are counts of the same finite set $I_x$, so
\begin{align*}
q = r.
\end{align*}
[/guided]
[/step]
[step:Count pairs through a fixed point to compute the replication number]
Fix again a point $x \in X$. Define
\begin{align*}
J_x := \{(y,B) \in (X \setminus \{x\}) \times \mathcal{B} : x \in B \text{ and } y \in B\}.
\end{align*}
Counting $J_x$ by blocks containing $x$, there are $r$ choices of such a block $B$, and each such block contains exactly $k-1$ points of $X \setminus \{x\}$. Hence
\begin{align*}
|J_x| = r(k-1).
\end{align*}
Counting $J_x$ by the point $y \in X \setminus \{x\}$, there are $v-1$ choices of $y$, and the defining property of a $2$-$(v,k,\lambda)$ design gives exactly $\lambda$ blocks containing both $x$ and $y$. Hence
\begin{align*}
|J_x| = \lambda(v-1).
\end{align*}
Equating the two counts gives
\begin{align*}
r(k-1)=\lambda(v-1).
\end{align*}
Since $k \geq 2$, we may divide by $k-1$ and obtain
\begin{align*}
r = \frac{\lambda(v-1)}{k-1}.
\end{align*}
[/step]
[step:Assemble the divisibility and class-count conclusions]
From the first step, $k \mid v$ and every parallel class contains exactly $v/k$ blocks. From the second step, $\frac{v}{k} \mid b$. From the third step, the number of parallel classes is $q=r$. From the fourth step,
\begin{align*}
r = \frac{\lambda(v-1)}{k-1}.
\end{align*}
These are precisely the asserted necessary conditions for a resolvable $2$-$(v,k,\lambda)$ design.
[/step]